skills/skill-design-lineage/SKILL.md
Persist design documents with branch tracking, revision chains, and cross-session discovery
npx skillsauth add nyldn/claude-octopus skill-design-lineageInstall 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.
Host: Codex CLI — This skill was designed for Claude Code and adapted for Codex. Cross-reference commands use installed skill names in Codex rather than
/octo:*slash commands. Use the active Codex shell and subagent tools. Do not claim a provider, model, or host subagent is available until the current session exposes it. For host tool equivalents, seeskills/blocks/codex-host-adapter.md.
When a design introduces or changes domain terms, load
skills/blocks/domain-modeling.md. Record each definition in the existing design
lineage artifact with its evidence source, checked time, and scope. A changed
definition invalidates dependent decisions. Link and reopen them instead of
leaving stale implementation guidance marked current.
Persist design documents from brainstorming and planning sessions with branch tracking, revision chains, and cross-session discoverability. Design docs are immutable after creation -- new revisions supersede prior versions rather than editing in place.
All design documents are stored under:
~/.claude-octopus/designs/<project-slug>/
The project slug is derived from the current git repository name or working directory basename:
SLUG=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
DESIGNS_DIR="${HOME}/.claude-octopus/designs/${SLUG}"
mkdir -p "$DESIGNS_DIR"
Design documents follow a strict naming convention:
{user}-{branch}-design-{datetime}.md
Where:
{user} -- the current OS username ($USER or whoami){branch} -- the current git branch, sanitized (slashes replaced with dashes){datetime} -- ISO 8601 compact timestamp (YYYYMMDD-HHmmss)Example:
chris-feature-auth-refactor-design-20260321-143022.md
Resolution:
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo "no-branch")
DATETIME=$(date -u +"%Y%m%d-%H%M%S")
FILENAME="${USER}-${BRANCH}-design-${DATETIME}.md"
Each design document contains YAML frontmatter followed by structured sections.
branch: feature/auth-refactor
user: chris
created: 2026-03-21T14:30:22Z
supersedes: chris-feature-auth-refactor-design-20260320-091500.md
Fields:
branch -- the git branch at time of creationuser -- the OS username who created the documentcreated -- ISO 8601 timestamp of creationsupersedes -- filename of the prior design document this revision replaces (omitted if this is the first design for the branch)# Design: [Title]
## Problem Statement
[What problem does this design solve? Why does it matter?]
## Constraints
[Technical, timeline, resource, or organizational constraints that bound the solution space.]
## Approaches Considered
[List each approach evaluated, with brief pros/cons for each.]
### Approach A: [Name]
- **Pros:** ...
- **Cons:** ...
### Approach B: [Name]
- **Pros:** ...
- **Cons:** ...
## Recommendation
[Which approach is recommended and why. Include the key trade-off that drove the decision.]
## Open Questions
[Unresolved questions that may affect implementation or require follow-up.]
After a brainstorm, planning, or define workflow produces design output, save it to the standard location with metadata.
SLUG=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
DESIGNS_DIR="${HOME}/.claude-octopus/designs/${SLUG}"
mkdir -p "$DESIGNS_DIR"
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo "no-branch")
DATETIME=$(date -u +"%Y%m%d-%H%M%S")
FILENAME="${USER}-${BRANCH}-design-${DATETIME}.md"
FILEPATH="${DESIGNS_DIR}/${FILENAME}"
cat > "$FILEPATH" <<EOF
branch: $(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "no-branch")
user: ${USER}
created: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
${SUPERSEDES:+supersedes: ${SUPERSEDES}}
# Design: [Title]
## Problem Statement
[Content from brainstorm/planning session]
## Constraints
[Identified constraints]
## Approaches Considered
[Evaluated approaches]
## Recommendation
[Selected approach and rationale]
## Open Questions
[Unresolved items]
EOF
Design docs are read-only after creation. To revise a design, create a new document with a supersedes reference to the prior version.
Before writing a new design, search for related prior designs using keyword matching.
SLUG=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
DESIGNS_DIR="${HOME}/.claude-octopus/designs/${SLUG}"
# Search for designs matching keywords (case-insensitive)
KEYWORDS="auth refactor"
grep -li "$KEYWORDS" "${DESIGNS_DIR}"/*.md 2>/dev/null | head -10
Constraints:
grep -liWhen prior designs are found, present them to the user:
Found 2 prior designs related to "auth refactor":
1. chris-feature-auth-refactor-design-20260320-091500.md (2026-03-20)
2. chris-main-design-20260315-140000.md (2026-03-15)
Would you like to review any of these before creating a new design?
If a prior design exists for the same branch, the new design document includes a supersedes field in its frontmatter pointing to the prior filename.
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo "no-branch")
# Find the most recent design for this branch
PRIOR=$(ls -t "${DESIGNS_DIR}"/*-${BRANCH}-design-*.md 2>/dev/null | head -1)
if [[ -n "$PRIOR" ]]; then
SUPERSEDES=$(basename "$PRIOR")
fi
This creates a linked chain of revisions:
v3 (supersedes: v2) -> v2 (supersedes: v1) -> v1 (no supersedes)
To walk the full revision history for a branch:
current="$FILENAME"
while [[ -n "$current" ]]; do
echo "$current"
current=$(grep '^supersedes:' "${DESIGNS_DIR}/${current}" 2>/dev/null | sed 's/supersedes: *//' || true)
done
Downstream commands (deliver, review, develop) auto-discover design context by checking the designs directory before starting work.
SLUG=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
DESIGNS_DIR="${HOME}/.claude-octopus/designs/${SLUG}"
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo "no-branch")
# Find designs for current branch
BRANCH_DESIGNS=$(ls -t "${DESIGNS_DIR}"/*-${BRANCH}-design-*.md 2>/dev/null | head -3)
if [[ -n "$BRANCH_DESIGNS" ]]; then
echo "Design context found for branch ${BRANCH}:"
for design in $BRANCH_DESIGNS; do
echo " - $(basename "$design")"
done
# Read the most recent design for context
LATEST_DESIGN=$(echo "$BRANCH_DESIGNS" | head -1)
DESIGN_CONTEXT=$(<"$LATEST_DESIGN")
fi
Downstream skills should check for designs before starting work:
Cap enforcement:
DOC_COUNT=$(ls "${DESIGNS_DIR}"/*.md 2>/dev/null | wc -l | tr -d ' ')
if [[ "$DOC_COUNT" -ge 50 ]]; then
echo "Warning: ${DOC_COUNT} design docs in ${DESIGNS_DIR}. Consider archiving old designs."
fi
Design docs are read-only after creation. To update a design:
supersedes to the prior document's filenameThis ensures a complete history of design evolution is always available.
tools
Prototype one risky assumption within a fixed budget, then keep or discard the result
testing
Break a plan or spec into vertical slices that each declare what blocks them — use when work is agreed but not yet cut into fileable pieces
testing
Interrogate a plan, decision, or design one question at a time until it holds — use to stress-test your own thinking before committing to it
business
Move incoming issues and pull requests through triage states until each is actionable or closed — use when the queue has piled up or a report arrives unsorted