Sake Testing
kattouf/Sake
A skill your agent uses when writing or running tests for the Sake project — unit tests, macro expansion tests, integration tests, test helpers, and CI test commands.
Instructions for writing new Sculptor frontend integration tests.
$ npx skills add imbue-ai/sculptor --skill write-integration-test -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install imbue-ai/sculptor write-integration-test --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/write-integration-test .claude/skills/write-integration-test && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "write-integration-test" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-test into .claude/skills/write-integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-integration-test", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-testType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add imbue-ai/sculptor --skill write-integration-test -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install imbue-ai/sculptor write-integration-test --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/write-integration-test .agents/skills/write-integration-test && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-integration-test" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-test into .agents/skills/write-integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-integration-test", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add imbue-ai/sculptor --skill write-integration-test -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install imbue-ai/sculptor write-integration-test --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/write-integration-test .cursor/skills/write-integration-test && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-integration-test" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-test into .cursor/skills/write-integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-integration-test", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/imbue-ai/sculptor.git --path .claude/skills/write-integration-test--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add imbue-ai/sculptor --skill write-integration-test -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install imbue-ai/sculptor write-integration-test --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/write-integration-test .gemini/skills/write-integration-test && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-integration-test" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-test into .gemini/skills/write-integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-integration-test", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install imbue-ai/sculptor write-integration-testInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add imbue-ai/sculptor --skill write-integration-test -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/write-integration-test .github/skills/write-integration-test && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-integration-test" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-test into .github/skills/write-integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-integration-test", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add imbue-ai/sculptor --skill write-integration-test -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install imbue-ai/sculptor write-integration-test --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/write-integration-test .opencode/skills/write-integration-test && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-integration-test" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/write-integration-test into .opencode/skills/write-integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-integration-test", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-integration-testInstructions for writing new Sculptor frontend integration tests.
Write Integration Test is an agent skill from imbue-ai/sculptor. Instructions for writing new Sculptor frontend integration tests. Covers how to use FakeClaude for deterministic agent behavior, test file setup, and the available FakeClaude commands. Use when writing new integration tests or adding tests to existing files.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Integration testing. It works with Bash. The repository describes itself as: Build product with grounded, parallel coding agents. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f847102. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
justgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Write Integration Test loads about 2.1k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 581 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from imbue-ai/sculptor at commit f847102, republished under its MIT licence (© imbue-ai). 581 words, ~2,126 tokens.
.claude/skills/write-integration-test/SKILL.md (or your agent's skills folder).This skill explains how to write a new frontend integration test for Sculptor.
Before writing your test, decide whether you need to control the agent's behavior.
When the prompt has no fake_claude: prefix, FakeClaude returns a default response ("[FakeClaude] Task completed.") without making any LLM calls.
Use the default response when: the test doesn't depend on specific agent behavior — e.g., testing UI elements, task list rendering, settings pages, modals, branch switching, navigation, or any feature where it doesn't matter what the agent says, only that a task exists.
Advantages:
How: Call start_task_and_wait_for_ready() with a plain prompt (no fake_claude: prefix) — or with no prompt at all when the test only needs the workspace UI shell.
If your test needs the agent to perform specific actions — e.g., writing files, running bash commands, calling tools, or asking user questions — use FakeClaude commands. These give you deterministic, repeatable agent behavior without any LLM calls.
Use FakeClaude commands when: the test asserts on specific agent output, tool usage, file changes, or any behavior that requires controlling what the agent does.
How: Prefix the prompt (or a follow-up send_chat_message) with fake_claude:<command> followed by a JSON argument in backticks.
| Command | Description | Example |
|---|---|---|
text | Emit a text response | fake_claude:text \{"text": "Hello"}`` |
write_file | Write a file to disk | fake_claude:write_file \{"file_path": "hello.py", "content": "..."}`` |
edit_file | Edit a file (old_string → new_string) | fake_claude:edit_file \{"file_path": "f.py", "old_string": "...", "new_string": "..."}`` |
bash | Run a shell command | fake_claude:bash \{"command": "echo hello"}`` |
todo_write | Update the todo/plan list | fake_claude:todo_write \{"todos": [...]}`` |
ask_user_question | Ask the user a question (Q&A panel) | fake_claude:ask_user_question \{"questions": [...]}`` |
multi_step | Execute multiple commands sequentially | fake_claude:multi_step \{"steps": [...]}`` |
parallel_tools | Execute multiple tools in parallel | fake_claude:parallel_tools \{"tools": [...]}`` |
warning | Surface a warning message | fake_claude:warning \{"message": "..."}`` |
/run-integration-test to Run TestsYou MUST use the /run-integration-test skill to run integration tests. Do not run pytest or just test-integration directly — the skill handles background execution and timeout monitoring, which is required because integration tests can hang indefinitely on failure. Running in foreground will block you with no way to recover.
The just test-integration commands shown below are for human developers only. As an agent, always use /run-integration-test instead.
Create your test file in sculptor/tests/integration/frontend/. Follow the patterns in the existing README at sculptor/tests/integration/frontend/README.md.
Key conventions:
sculptor_instance_: SculptorInstance fixture for tests using the shared instancesculptor_instance_factory_: SculptorInstanceFactory for tests that need multiple Sculptor instances (e.g., restart tests)@user_story("...") decoratorexpect() for all assertions (auto-retrying)get_by_test_id() in test codeonly() from sculptor.foundation.itertools when expecting exactly one elementdocs/development/review/integration_tests.md to avoid common anti-patterns (flaky sleeps, snapshot races, missing waits)"""Integration tests for my new feature."""
from playwright.sync_api import expect
from sculptor.testing.playwright_utils import start_task_and_wait_for_ready
from sculptor.testing.sculptor_instance import SculptorInstance
from sculptor.testing.user_stories import user_story
@user_story("to verify my new feature works")
def test_my_feature(sculptor_instance_: SculptorInstance) -> None:
"""Test that my feature works correctly."""
# No fake_claude: prefix — FakeClaude returns the default response.
# The helper creates the workspace, sends the prompt as the first chat
# message, and (by default) waits for the agent to finish.
task_page = start_task_and_wait_for_ready(
sculptor_page=sculptor_instance_.page,
prompt="Do something",
)
chat_panel = task_page.get_chat_panel()
expect(chat_panel.get_messages().last).to_contain_text("Task completed")
# ... your assertions on UI elements here ..."""Integration tests that require controlled agent behavior."""
from playwright.sync_api import expect
from sculptor.testing.elements.chat_panel import wait_for_completed_message_count
from sculptor.testing.playwright_utils import start_task_and_wait_for_ready
from sculptor.testing.sculptor_instance import SculptorInstance
from sculptor.testing.user_stories import user_story
@user_story("to verify agent creates files correctly")
def test_agent_creates_file(sculptor_instance_: SculptorInstance) -> None:
"""Test that the agent creates a file and it appears in changes."""
task_page = start_task_and_wait_for_ready(
sculptor_page=sculptor_instance_.page,
prompt="""\
fake_claude:write_file `{
"file_path": "hello.py",
"content": "def hello_world():\\n print('hello world')\\n"
}`""",
)
chat_panel = task_page.get_chat_panel()
wait_for_completed_message_count(chat_panel=chat_panel, expected_message_count=2)
# ... your assertions on file changes here ... task_page = start_task_and_wait_for_ready(
sculptor_page=sculptor_instance_.page,
prompt="""\
fake_claude:multi_step `{
"steps": [
{
"command": "write_file",
"args": {
"file_path": "hello.py",
"content": "def hello():\\n print('hello')\\n"
}
},
{
"command": "bash",
"args": {"command": "git add hello.py && git commit -m 'Add hello'"}
}
]
}`""",
)Use /run-integration-test to run your test:
/run-integration-test sculptor/tests/integration/frontend/test_my_feature.pyFakeClaude tests require no special setup — no API keys, no snapshot generation. They run deterministically every time.
git add sculptor/tests/integration/frontend/test_my_feature.pyWhen FakeClaude commands have complex JSON arguments (nested objects, arrays), use multiline strings for readability:
task_page = start_task_and_wait_for_ready(
sculptor_page=sculptor_instance_.page,
prompt="""\
fake_claude:ask_user_question `{
"questions": [
{
"question": "What language do you prefer?",
"header": "Language",
"options": [
{"label": "Python", "description": "A versatile language"},
{"label": "Rust", "description": "For systems programming"}
],
"multiSelect": false
}
]
}`""",
)For simple single-field JSON, inline is fine:
task_page = start_task_and_wait_for_ready(
sculptor_page=sculptor_instance_.page,
prompt='fake_claude:text `{"text": "Hello from FakeClaude"}`',
)If a test fails, use the /debug-integration-test skill. It covers common failure modes (Playwright timeouts, element state issues), how to read test logs, and investigation strategies.
© imbue-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/write-integration-test of imbue-ai/sculptor.
Open the folder on GitHubat commit f847102
Write Integration Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Write Integration Test this skillimbue-ai/sculptor | 236 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Sake Testingkattouf/Sake | 116 | — | ~743 | Automated safety check: Pass | MIT | |
| Telnyx Twilio Migrationteam-telnyx/ai | 220 | — | ~11k | Automated safety check: Notes | MIT | |
| OpenHarness End-to-End EvalsHKUDS/OpenHarness | 16k | 1 repos | ~2.1k | Automated safety check: Notes | MIT | |
| E2E Testinglangflow-ai/langflow | 156k | — | ~3.3k | Automated safety check: Pass | MIT | |
| E2Ecallstack/react-native-pager-view | 3.4k | 1 repos | ~2.1k | Automated safety check: Pass | MIT |
kattouf/Sake
A skill your agent uses when writing or running tests for the Sake project — unit tests, macro expansion tests, integration tests, test helpers, and CI test commands.
team-telnyx/ai
Migrate from Twilio to Telnyx. An agent skill from team-telnyx/ai.
HKUDS/OpenHarness
Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.
langflow-ai/langflow
Write and review Playwright E2E tests for Langflow. An agent skill from langflow-ai/langflow.
callstack/react-native-pager-view
Agentic end-to-end tests with e2e, the e2e runner. An agent skill from callstack/react-native-pager-view.
iOfficeAI/AionUi
Sets the test-writing workflow for the repository: risk-first scenario lists, behavior-focused Vitest tests, a full run before each commit and a coverage target.
imbue-ai/sculptor
QA the Sculptor mobile web UI on a real iOS Simulator, driven headlessly from a Mac.
imbue-ai/sculptor
Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g.
imbue-ai/sculptor
Post a one-line PR announcement to a Slack channel, and mark it :merged: when the PR merges.
imbue-ai/sculptor
Run Claude programmatically against collections of files in the codebase.
imbue-ai/sculptor
Build or modify a Sculptor extension — a runtime ESM module loaded into the Sculptor UI.
imbue-ai/sculptor
Review a set of code changes against Sculptor's review categories and produce a markdown findings table.
Works with
Categories
Instructions for writing new Sculptor frontend integration tests. Write Integration Test is an agent skill from imbue-ai/sculptor. Instructions for writing new Sculptor frontend integration tests.
Write Integration Test fits situations like: writing new integration tests; adding tests to existing files.
Run `npx skills add imbue-ai/sculptor --skill write-integration-test -a claude-code`. Or copy the skill folder (.claude/skills/write-integration-test in imbue-ai/sculptor) into .claude/skills/write-integration-test in your project. Claude Code loads it when a task matches its description.
Run `npx skills add imbue-ai/sculptor --skill write-integration-test -a codex`. Or copy the skill folder (.claude/skills/write-integration-test in imbue-ai/sculptor) into .agents/skills/write-integration-test in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add imbue-ai/sculptor --skill write-integration-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-integration-test, .gemini/skills/write-integration-test, .github/skills/write-integration-test and .opencode/skills/write-integration-test in your project.
Going by SKILL.md and its folder, Write Integration Test needs the command-line tools its instructions call (just and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Write Integration Test is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Write Integration Test: Sake Testing (kattouf/Sake, 116 stars), Telnyx Twilio Migration (team-telnyx/ai, 220 stars), OpenHarness End-to-End Evals (HKUDS/OpenHarness, 16k stars) and E2E Testing (langflow-ai/langflow, 156k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
imbue-ai (a GitHub organization) maintains it in imbue-ai/sculptor, which has 236 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 7, 2026.
Source: imbue-ai/sculptor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.