shape-new
Initialize a new change folder under context/changes/<change-id> with a change.md identity file
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Initialize a new change folder under context/changes/<change-id> with a change.md identity file
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Self-evaluation loop for the treadmill Claude plugins pack. Runs cursor-plugin-evals against bundled skills, tracks quality over time, and escalates recurring failures via PAMS. Use periodically or before publishing plugin updates.
Autonomously implement technical plans from context/changes/<change-id>/plan.md under Codex's /goal — no human interaction at any point. Sibling of /shape-implement for unattended runs, in an interactive /goal session or headless via Codex -p. Flips the plan's Automated Progress rows, verifies each phase through an automatic quality-gate stack (plan success criteria, deliberate-break check, full suite), commits each phase on green with Conventional Commits, and surfaces pending Manual rows as a closing human checklist. Use when the user wants autonomous or unattended plan execution, pairs /goal with a plan, asks to "run the plan under /goal", or needs headless implementation.
Review implementation against plan for drift, dangerous decisions, and pattern compliance
Implement technical plans from context/changes/<change-id>/plan.md with verification
Review implementation plans for substance, feasibility, and architectural fitness. Use when user asks to review a plan, says "is this plan good", "check my plan", "review this plan", mentions plan review, or references a plan file and asks for feedback. Also trigger when user finishes /shape-plan and wants validation before starting /shape-implement.
Drive an approved implementation plan to completion phase by phase, test-first, through the red→green→refactor cycle, but only for phases whose implementation does not exist yet. Reads a plan from context/changes/<change-id>/plan.md and the canonical Progress section, and for each phase first checks whether the phase is TDD'able and still unimplemented — if it is, you write a failing test (RED), make it pass with the minimal code (GREEN), then clean up (REFACTOR); if it is not TDD'able, you redirect that phase to /shape-implement; if implementation is already present, you stop and explain that TDD does not work for already existing code, then suggest /shape-implement for that phase. Mirrors /shape-implement (same plan, same Progress source of truth, same phase-end commit ritual and clipboard handoffs) but flips the order so the failing test always comes before the code. Assumes test infrastructure is already in place — it does NOT set up runners, configs, fixtures, or CI. Use this skill when the user says "td
| name | shape-new |
| description | Initialize a new change folder under context/changes/<change-id> with a change.md identity file |
| argument-hint | <change-id-or-path> [freeform intent] |
| allowed-tools | ["Read","Glob","Write","Bash","AskUserQuestion"] |
Bootstrap a new change folder under context/changes/<change-id>/. Creates a tiny identity file (change.md) and points the user at the next skill.
A "change" is a single unit of work end-to-end — research, planning, implementation, and review all live inside one folder keyed by <change-id>.
When this command is invoked:
I'll create a new change folder. Please provide a change-id (kebab-case slug):
Examples:
/shape-new context-dir-restructure
/shape-new oauth-login add Google sign-in so users skip the email-password step
/shape-new @context/changes/oauth-login/
The first token becomes the change-id. Anything after it is freeform intent — used to write a richer title and to pick the next-step suggestion. Path-style references (with or without a leading `@`) are accepted; the last path segment is used as the change-id.
The change-id must be:
- kebab-case (lowercase letters, digits, hyphens; no leading/trailing hyphen, no double hyphens)
- unique across `context/changes/` and `context/archive/`
Then wait for the user to provide an argument.
Split the raw argument string on the first run of whitespace:
@ if present (@context/changes/feature-x/ → context/changes/feature-x/)./ if present./, take the last non-empty path segment (context/changes/feature-x → feature-x).<change-id>.Examples:
| Raw input | <change-id> | Intent |
|---|---|---|
feature-x | feature-x | (empty) |
oauth-login add Google sign-in for faster onboarding | oauth-login | add Google sign-in for faster onboarding |
@context/changes/oauth-login/ | oauth-login | (empty) |
@context/changes/oauth-login/ revisit the token-refresh edge case | oauth-login | revisit the token-refresh edge case |
My Feature add OAuth | My Feature (will fail kebab-case check) | add OAuth |
Before creating anything:
kebab-case check: <change-id> must match ^[a-z][a-z0-9]*(-[a-z0-9]+)*$ (starts with a letter, segments of lowercase + digits separated by single hyphens, no leading/trailing hyphen, no double hyphens).
error: change-id "<id>" is not kebab-case. Use lowercase letters, digits, and single hyphens only (e.g., "oauth-login", not "OAuth Login"). and STOP.Uniqueness check: neither context/changes/<change-id>/ nor context/archive/<change-id>/ may already exist.
error: change "<id>" already exists at <path>. Pick a different change-id or work inside the existing folder. and STOP.context/changes/ parent exists: if missing, print error: context/changes/ not found — is this repo set up for the shape context structure? and STOP. (Do NOT auto-create the parent; that's a sign the repo isn't ready.)
context/changes/<change-id>/.<title>:
multi-course-access → Multi course access).## Notes body:
<!-- Free-form notes for this change: links, ad-hoc context, decisions that don't belong in research/frame/plan. -->context/changes/<change-id>/change.md with this exact shape (the <notes-body> slot is what step 3 produced):---
change_id: <change-id>
title: <title>
status: new
created: <YYYY-MM-DD>
updated: <YYYY-MM-DD>
archived_at: null
---
## Notes
<notes-body>
<YYYY-MM-DD> is today's date (use date +%Y-%m-%d).
See docs/reference/change-md.md for the full schema reference (allowed status values, transitions, what is intentionally NOT in change.md).
After successful creation, print a next-step prompt and copy the suggested command to clipboard.
The default next step is /shape-plan <change-id> — most changes go straight to planning. The other two skills are situational: /shape-research when the parsed intent (or the surrounding turn) suggests the change requires meaningful codebase exploration before a plan can be written, and /shape-frame when the intent signals that the framing is suspect — either bug-shape ("fix", "bug", "broken", "why is", "root cause", "regression", "self-diagnosed solution") or scope/design-shape ("should we even", "is this the right", "what's actually broken", "rethink", "challenge the assumption"). Pick the situational option only when the signal is clear; otherwise default to /shape-plan.
NEXT_CMD="/shape-plan <change-id>" # default; see above for when to switch to /shape-research or /shape-frame
echo -n "$NEXT_CMD" | pbcopy 2>/dev/null || echo -n "$NEXT_CMD" | clip.exe 2>/dev/null || echo -n "$NEXT_CMD" | xclip -selection clipboard 2>/dev/null || true
# PowerShell (Windows)
Set-Clipboard $NEXT_CMD
Then display:
✓ Created context/changes/<change-id>/change.md (status: new)
Next step:
→ <NEXT_CMD> (✓ copied to clipboard)
Other options:
/shape-research <change-id> — explore the codebase first (when planning needs grounding)
/shape-frame <change-id> — challenge the framing first (when the symptom and proposed fix are stated as one, or when the right scope to plan is unclear)
If no clipboard tool is available (pbcopy, clip.exe, xclip, Set-Clipboard), drop the (✓ copied to clipboard) annotation but still print the suggestion.
frame.md, research.md, plan.md, or any other artifact — those come from their respective skills.## Progress section in plan.md is the single source of truth for execution state.change.md is record-only.context/changes/ parent directory; if it's missing, the repo isn't bootstrapped for this structure and the user should resolve that first.