ワンクリックで
add-synthesis-fixture
"
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
"
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
"
"
"
"
"
"
| name | add-synthesis-fixture |
| description | " |
tests/fixtures/synthesis/output-docs.json — Pass 1 output (CLAUDE.md content)tests/fixtures/synthesis/output-tooling.json — Pass 2 output (skills, hooks, MCP)tests/fixtures/synthesis/output.json — derived merged file (DO NOT edit directly)schemas/synthesis-docs.json and schemas/synthesis-tooling.json — the output contractstests/unit/merge.bats — tests that read from output.json directlyoutput.json is a derived file — it is the jq -s '.[0] * .[1]' merge of output-docs.json and output-tooling.json. Never edit output.json directly. After any change to either pass fixture, always re-merge.
output-docs.json): CLAUDE.md root content, subdirectory CLAUDE.md filesoutput-tooling.json): skills, hooks, subagents, mcp_servers, settings_hooksSkill entries in output-tooling.json must have:
name in kebab-case\n for newlines)Example skill entry:
{
"name": "my-skill",
"description": "Does something specific to this project. Use when...",
"content": "---\nname: my-skill\ndescription: >\n Does something specific. Use when...\n Do NOT use for...\n---\n\n## Before You Start\n..."
}
Hook entries must maintain the 1:1 hooks-to-settings_hooks relationship:
// In hooks[]
{"filename": "check.sh", "event": "PostToolUse", "description": "...", "content": "#!/usr/bin/env bash\n..."}
// Matching entry in settings_hooks[]
{"event": "PostToolUse", "matcher": "Write", "command": ".claude/hooks/check.sh"}
After editing either pass fixture:
jq -s '.[0] * .[1]' \
tests/fixtures/synthesis/output-docs.json \
tests/fixtures/synthesis/output-tooling.json \
> tests/fixtures/synthesis/output.json
grep -n '[<>]' tests/fixtures/synthesis/output-tooling.json | head -20
Angle brackets in skill/subagent descriptions will cause validate-skill.sh to fail, and postprocess_descriptions() in lib/synthesize.sh will silently replace them at runtime — meaning the fixture diverges from what production produces.
Check tests/unit/merge.bats and tests/integration/synthesize_phase.bats for assertions on skill count, specific field values, or hook count that may need updating.
The claude_md field contains deliberate padding lines to exceed the 100-line minimum for validate_claude_md checks. Do NOT trim it:
echo "$(jq -r '.claude_md' tests/fixtures/synthesis/output-docs.json | wc -l) lines"
# Must be >= 100
make test-unit
make test-integration
Editing output.json directly — it gets overwritten on the next merge. Always edit the pass fixture and re-merge.
Using make_claude_envelope on output.json — unit tests copy output.json raw into $WORK_DIR/synthesis/; integration tests wrap output-docs.json and output-tooling.json with make_claude_envelope. Using the wrong combination causes silent null extractions.