.stencila/skills/software-plan-creation/SKILL.md
Create delivery plans for software design specifications. Use when the user wants to plan implementation, break a design into delivery phases, create an implementation roadmap, produce a test plan, or structure a TDD approach for a feature. Reads the latest design spec by default and produces a phased plan covering implementation, testing, and documentation, with TDD slices sized to be logically coherent without degenerating into micro-slices.
npx skillsauth add stencila/stencila software-plan-creationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce a delivery plan that turns a software design specification into an actionable sequence of implementation, testing, and documentation work. The primary input is a persisted design spec read from .stencila/designs/. The primary output is a Markdown plan written to .stencila/plans/.
Use this skill when the user wants a delivery plan, implementation plan, task breakdown, phased roadmap, or test-driven development strategy for a design spec. Do not use it when the main task is to write production code, create a design from scratch, review code, or build a workflow.
Identify the design to plan against:
glob with pattern .stencila/designs/*.md to discover available design specs (results are sorted newest first)read_file to load the full design contentCheck for existing plans:
glob with pattern .stencila/plans/*.md to see whether a plan already exists for the target designread_file to load it and ask the user whether to replace it, update it, or create a new plan alongside itUnderstand the design and codebase before planning:
read_file, glob, and grep to understand the relevant code structure, module boundaries, test conventions, and existing patterns — this context helps produce phases and tasks that align with how the codebase is actually organizedDetermine phasing strategy:
Determine testing approach:
Size TDD slices deliberately:
Draft the plan with these sections (adapt as needed):
Tailor detail level to the design:
Check plan quality before finishing:
Persist the plan:
.stencila/plans/{name}.md using write_file, where {name} is a kebab-case name derived from the design name (e.g., if the design is user-auth-flow, the plan might be user-auth-flow-delivery)edit_file or apply_patch over rewriting the entire fileUse a structure like this when appropriate. Omit sections that do not apply and add sections that improve the plan.
# Delivery Plan: <feature or system name>
## Summary
Brief description of what is being delivered and the value it provides.
## Design Reference
- **Design**: <design name>
- **Path**: <path to design file>
## Prerequisites
- <anything that must be resolved before implementation begins>
## Phases
### Phase 1: <name>
**Scope**: What this phase delivers.
**Tasks**:
1. <concrete task>
2. <concrete task>
**Testing**:
- <testing approach for this phase>
- <TDD slices if applicable: slice 1 — write failing test(s) for one coherent behavior, implement, refactor; slice 2 — add the next meaningful behavior, implement, refactor; ...>
**Exit criteria**:
- <what must be true when this phase is complete>
### Phase 2: <name>
...
## Testing Strategy
### Unit tests
- ...
### Integration tests
- ...
### End-to-end tests
- ...
### TDD approach (when applicable)
- Work in red-green-refactor slices sized around meaningful behaviors
- Red: write one or a few closely related failing tests derived from one behavior or acceptance-criterion-sized increment
- Green: implement just enough code to pass those tests
- Refactor: clean up duplication and improve structure while tests stay green
- Repeat: move to the next slice — do not batch many unrelated tests before implementing, but also do not decompose work into low-value micro-slices
- Prefer slice boundaries that align with behavior, dependency, or risk boundaries
- This iterative cadence keeps each cycle focused while avoiding workflow overhead from over-fragmented plans
## Documentation
- <what documentation is needed and when>
## Risks and Mitigations
| Risk | Impact | Mitigation |
|------|--------|------------|
| ... | ... | ... |
## Definition of Done
- [ ] All acceptance criteria from the design are satisfied
- [ ] Tests pass at unit, integration, and end-to-end levels as appropriate
- [ ] Documentation is written and reviewed
- [ ] Code is reviewed and merged
Input: "Create a delivery plan for the latest design"
Output:
glob to find designs in .stencila/designs/, then read_file for the latest design.stencila/plans/ via write_fileInput: "Plan implementation for the user-auth-flow design using TDD"
Output:
.stencila/designs/user-auth-flow.md via read_file.stencila/plans/ via write_fileConcrete excerpt from a Phase 1 with balanced TDD slices:
### Phase 1: Core authentication types and token validation
**Scope**: Define the `AuthToken` and `AuthError` types, implement token parsing and expiry validation.
**Tasks**:
1. Create `auth/types.rs` with `AuthToken` struct (fields: `sub`, `exp`, `iat`, `roles`) and `AuthError` enum
2. Implement `AuthToken::parse(raw: &str) -> Result<AuthToken, AuthError>`
3. Implement `AuthToken::is_expired(&self) -> bool`
**Testing (TDD slices)**:
- *Slice 1*: Write failing tests for malformed-token handling, including empty input and clearly invalid token structure. Implement just enough parsing and error handling to reject malformed input. Refactor.
- *Slice 2*: Write failing tests for successful parsing of a well-formed JWT into `AuthToken`, including the required `sub`, `exp`, `iat`, and `roles` fields. Extend parsing to pass. Refactor.
- *Slice 3*: Write failing tests for expiry behavior covering past and future `exp` values. Implement `is_expired` and any supporting time-handling logic. Refactor.
**Exit criteria**:
- `AuthToken` and `AuthError` types compile and are public
- All three TDD slices pass
- `cargo clippy` and `cargo fmt` produce no warnings
Input: "I need a plan for building a notification system" (no design exists)
Output:
glob to search .stencila/designs/ and finds no matching designsoftware-design-creation skill, or (2) proceed with a lightweight plan that explicitly marks all assumptions and flags that a design review should follow.glob reveals an existing plan in .stencila/plans/ that covers the target design, do not silently overwrite it. Show the user the existing plan name and ask whether to replace it entirely, update specific sections, or create a new plan alongside it with a different name.Use these heuristics when deciding whether a proposed TDD slice is too small, about right, or too large.
When in doubt, choose the smallest slice that still feels like a meaningful increment of user-visible or developer-visible progress.
documentation
An agent skill providing instructions for AI agents.
testing
Critically review a Stencila workflow and suggest improvements. Use when asked to review, audit, critique, evaluate, or improve a workflow directory or WORKFLOW.md file. Covers frontmatter validation, DOT pipeline quality, workflow structure, agent selection quality, discovery metadata, ephemeral workflow conventions, workflow composition, and adherence to Stencila workflow patterns.
development
Create a new Stencila workflow. Use when asked to create, write, scaffold, or set up a workflow directory or WORKFLOW.md file. Covers workflow discovery, duplicate-name checks, ephemeral workflows, WORKFLOW.md frontmatter, DOT pipeline authoring, goals, agents, branching, composition, and validation.
development
Critically review an existing or proposed Stencila theme artifact for correctness, token usage, target coverage, cross-target portability, dark-mode handling, maintainability, and approval readiness. Use when asked to review, critique, assess, audit, or validate a theme.css file, theme patch, theme plan, site theme, document theme, plot theme, print or PDF theme, check design tokens, assess DOCX or email behavior, review dark mode support, or validate with stencila themes validate.