From dstoic
Create OpenSpec change proposals. Use when: user wants to plan a feature, create a proposal, or start a new OpenSpec change.
npx claudepluginhub digital-stoic-org/agent-skills --plugin dstoicThis skill is limited to using the following tools:
Analysis + reasoning engine for change proposals. Assumes decision made (via /brainstorm or direct request).
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Analysis + reasoning engine for change proposals. Assumes decision made (via /brainstorm or direct request).
| Phase | Purpose | Model | Thinking |
|---|---|---|---|
| Analyze | Explore codebase, find affected files | Sonnet | off |
| Reason | Dependencies, risks, integration points | Sonnet | on |
| Generate | Write artifacts from analysis | Sonnet | off |
Exploration: Consult openspec/project.md → Exploration Strategy section for tools and must-read files.
Philosophy: Consult openspec/project.md → Execution Philosophy section for current mode and principles.
Create change proposal from codebase analysis.
Input: $ARGUMENTS = change-id: Brief description
Workflow:
Philosophy alignment: Include ## Execution Philosophy Alignment section in proposal (see reference.md for template).
Output: openspec/changes/{change-id}/proposal.md with Why/What/Impact from analysis
Next step (ALWAYS display after writing proposal.md):
✅ proposal.md written → Next: /openspec-design design {change-id} → Then: /openspec-plan tasks {change-id}
Generate outcome-centric tasks + test strategy from proposal.
Input: $ARGUMENTS = change-id [--skip-design] [--skip-test]
Sources (read before generating):
openspec/changes/{id}/proposal.md (required)openspec/changes/{id}/design.md (required unless --skip-design)Design gate: If design.md does NOT exist and --skip-design not passed:
⚠️ No design.md found. Run /openspec-design design {change-id} first, or pass --skip-design to bypass.design.md mapping rules (when design.md exists):
If --skip-design passed without design.md, derive sections from proposal.md (backward compatible).
Rules:
### GATE N: Description after sections representing logical boundariesCross-check (only when design.md was consumed — after generating, before presenting output): Print a coverage table mapping design.md components to generated artifacts:
| design.md Component | Type | tasks.md | tests.md | Status |
|---|---|---|---|---|
| {name} | container/aggregate/flow/invariant/interaction | S{n} / — | GATE {n} / — | ✅ / ⚠️ |
Coverage rules:
⚠️ gaps = warn, don't block. If gaps found, ask user: "Fix these gaps now or defer?"
tasks.md headers (MUST include both):
**Implementation**: Always use /openspec-develop {change-id} — never implement tasks ad-hoc.**Design**: See design.md for BC scope, invariants, C4 containers, key flows, and ADRs. (only when design.md was consumed)Next step (ALWAYS display after writing tasks.md/tests.md):
✅ tasks.md written → Next: /openspec-review {change-id} (tech lead gate) → Then: /openspec-develop {change-id}
Output:
tasks.md - verifiable outcomes with gatestests.md - verification strategy (unless --skip-test or garage mode + simple change)tests.md generation:
[auto] (default), [smoke], or [manual] — see reference.md §Test Execution Model**Execution**: Always run gates via /openspec-test {change-id} {N} — never ad-hoc.**Design**: See design.md for BC scope, invariants, C4 containers, key flows, and ADRs.Generate spec with delta headers and real scenarios.
Input: $ARGUMENTS = change-id capability-name
Output: specs/{capability}/spec.md with:
## ADDED/MODIFIED/REMOVED Requirements### Requirement: with SHALL/MUST keywords#### Scenario: with GIVEN/WHEN/THEN (from codebase understanding)