From sdd
Ingests SDD artifacts (spec, plan, tasks summary, review findings, lessons) into the repo-scoped `.wiki/` knowledge base. Two modes: `--preliminary` (post-ship, pre-merge) writes spec/plan/tasks-summary pages; `--final` (post-merge) writes review-findings and lessons pages cross-linked to the preliminary. Use when user says "ingest wiki", "save to wiki", "archive to wiki", "write to .wiki", or when /ship/close-loop delegate here. Do NOT use for wiki consultation (that is handled inline by /spec, /plan, and /wiki:close-loop via scripts/wiki-query.sh). Do NOT write wiki pages without explicit user confirmation.
npx claudepluginhub robertraf/rob-agent-workflow --plugin sddThis skill is limited to using the following tools:
You are ingesting SDD artifacts into the repo-scoped wiki: **Compile once, maintain forever.**
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
You are ingesting SDD artifacts into the repo-scoped wiki: Compile once, maintain forever.
The wiki is a persistent, compounding artifact that sits between the user and raw source sessions. Every ingest enriches it. Never write without confirmation.
One argument is required: --preliminary or --final. Optional: --title "<title>" to override the auto-derived title.
If neither mode is passed, stop and ask the user which mode they intend.
Run the init helper to ensure .wiki/ exists with index.md, log.md, and CLAUDE.md:
bash "${CLAUDE_SKILL_DIR}/scripts/wiki-init.sh"
This is safe to re-run — it preserves existing content and only creates missing files.
For --preliminary mode, gather from the current session:
/spec (look in conversation history for the ### Functional Specification block)/plan (look for ### Technical Plan)gh pr view --json number,headRefName,title,url from the current branch)For --final mode, gather:
gh pr view --json number,headRefName,state,mergedAt,url,body,comments)pr_number: in frontmatter across .wiki/*.md)/review outputs in conversationgit log --oneline <review-commit>..HEAD if applicable)If key artifacts are missing, stop and ask the user to paste them rather than fabricating content.
Present a preview before writing. Show:
.wiki/spec-2026-04-17-wiki-integration.md)Ask explicitly: "Proceed with ingestion?" Wait for confirmation. If the user declines, exit cleanly — nothing written.
Scan the artifacts for secret-like strings before writing. Use the same pattern from skills/ship/scripts/pre-ship-check.sh:
echo "<content>" | grep -iE '(api_key|secret_key|password|token|credential).*=.*['\''"][^'\''"]{8,}'
If matches are found, show them to the user and ask whether to proceed or sanitize first.
For each target filename, check if it already exists. If yes, ask the user to pick:
-2, -3, etc. (use the lowest free number).Never silently overwrite.
Format: {type}-{YYYY-MM-DD}-{slug}.md
spec, plan, tasks-summary, review-findings, lessonsdate +%Y-%m-%d)slug=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr -c 'a-z0-9' '-' | sed 's/--*/-/g; s/^-//; s/-$//' | cut -c1-40)
Every page must begin with YAML frontmatter:
---
type: spec | plan | tasks-summary | review-findings | lessons
title: <human title>
slug: <slug>
date: YYYY-MM-DD
pr_number: <N | null>
branch: <feat/N-name | null>
related: [<sibling-filename.md>, ...]
keywords: [<kw1>, <kw2>, <kw3>]
source_session: <optional short descriptor>
stage: preliminary | final
---
Pick keywords that future sessions would grep for — 3-8 terms, lowercase.
related rules:
--preliminary mode: link all pages from the same ingestion to each other (spec ↔ plan ↔ tasks-summary).--final mode: link the new pages to the preliminary page found in Step 2.Body content: paste the artifact verbatim, preserving any Given/When/Then blocks and numbered lists. Translate to English if the source is in another language — wiki content is English per .claude/rules/git-conventions.md.
.wiki/index.mdAppend each new page to the correct H2 section (## Specs, ## Plans, ## Tasks Summaries, ## Review Findings, ## Lessons). Entry format:
- [<title>](<filename>) — <one-line summary> (<YYYY-MM-DD>, PR #<N>)
If the H2 section is missing (old .wiki/ predating this skill), add it in the correct order.
.wiki/log.mdAdd an entry at the end:
## [YYYY-MM-DD] <stage> | <title>
- Ingested: <filename1>, <filename2>
- PR: #<N>
- Branch: <branch-name>
- <optional one-line note about what triggered this ingest>
Report back to the user:
✓ Wiki updated — <stage> ingestion for PR #<N>
Pages written: <list>
Index sections updated: <list>
Log entry appended.
Do NOT automatically commit. The user controls when to commit wiki changes.
keywords: field drives wiki-query.sh rankings. Three to eight relevant terms, not zero.--final, if the PR isn't merged yet, warn the user. A final page implies the change is done./ship, /wiki:close-loop, /spec, /plan) must delegate here, not write to .wiki/ directly..wiki/ is not an error — Step 1 creates it..claude/rules/wiki-conventions.md for any detail not covered here..claude/rules/wiki-conventions.mdscripts/wiki-init.sh, scripts/wiki-query.sh/ship Step 9 (preliminary), /sdd:wiki-close-loop (final)