product-sdd
CTO-posture skill that authors a project's SDD — the architecture-and-cut document, written off the settled SRS and UXD.
Skill by Eyal Golan
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/eyalgo-product-sdd
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, design, writing, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/product-sdd
What's inside
- Skill name
product-sdd- Description
- CTO-posture skill that authors a project's SDD — the architecture-and-cut document, written off the settled SRS and UXD. Requires CTO posture (writes nothing and stops, saying "product-sdd requires CTO posture", if invoked outside a cto session or the cto subagent). Non-interactive by design — every run drafts the whole SDD best-effort, including the parts the CPO or the CDO decides, and writes whatever it cannot settle into a companion open-issues file whose items carry the answering seat's Seat field. On the next round it folds the owner's answered companion into the SDD, retires the answered file whole to a permanent trail, re-raises what stays unsettled, and removes the companion when nothing is left — its absence means the SDD is done. The skill resolves where the files land from the project's Product path. Use when authoring, continuing or revising a product's SDD — write the SDD, cut the architecture into slices, station 5 of the definition sequence. Do not use for upstream documents (product-prd / product-srs / product-uxd / product-design / product-content), the Agari (project-agari), per-change specs (development-specs), or anything downstream (Delivery Plan / FDR / ADR / NFDR).
- License
- MIT
- Metadata
- risk: safe · tags: sdd, cto, product-definition, architecture-cut, upstream-chain · author: Eyal Golan · created: 2026-10-03 · version: 1.0.4 · category: product-definition
- Instructions
- 176 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- description: longer than 1024 characters
Files (8)
- SKILL.md
- claude.md · intelligence/
- codex.md · intelligence/
- gemini.md · intelligence/
- ollama.md · intelligence/
- launcher.md
- rich.md · prompts/
- stack.json
SKILL.md (first lines)
# product-sdd ## Purpose Author a project's **SDD**: the technical *how*, ending in a **cut** — the architecture the rest of the system builds against, derived from the settled SRS and UXD and the PRD, then cut into ordered slices that each deliver something on their own. It is station 5 of the definition sequence (`<CORE>/doctrine/setup/setting_up_a_project.md`, which owns the sequence and is not restated here). This file is the **orchestrator**: posture, the file loop, path resolution, staging and the commit. **How to author** — the weighing of the shape, the parts and seams, the cut, and how each part the CPO or the CDO decides is drafted and routed — is the authoring prompt **`prompts/rich.md`**, applied at Step 2; a rule referenced below by name lives there. The document's **section shape** and the table of who decides each part are the template **`<CORE>/templates/product-templates/sdd_template.md`**; the companion's shape is **`sdd_open_issues_template.md`** beside it. None of them is restated here. **Non-interactive, one CTO run.** The CTO writes the whole SDD in one run, best-effort, and never blocks on the owner. A part the template gives to the CPO or the CDO to decide is drafted too, and a call the inputs leave unsettled — or a draft that needs that seat's confirmation — becomes an item in the companion carrying `- **Seat:** cpo` or `- **Seat:** cdo`. The owner answers on their own time and re-runs the skill, and **the run folds the answered companion on its next round** (Step 2). --- ## Posture **CTO role required.** If invoked outside CTO posture (neither a `cto:` session nor the `cto` subagent), **write nothing** and stop, saying: *"product-sdd requires CTO posture. Switch? (Open a session with the `cto:` prefix, or run the `cto` subagent.)"* Make this check before any read that leads to a write. Do not shed the role. --- ## The files and the loop | File | What it is | Lifecycle | |---|---|---| | `<Product path>/docs/SDD.md` | The SDD — best-effort complete on every run, every part drafted. | Permanent; one document, revised and versioned in place (the template's bump-on-material-change note), never forked. | | `<Product path>/docs/SDD_open_issues.md` | The companion, holding what the run could not settle, in the buckets `sdd_open_issues_template.md` defines. Each item names the seat that answers it. | Transient — exists only while something is unresolved. **Its absence is the done signal.** | | `<Product path>/docs/trail/sdd/cycle-<N>.md` | Each answered companion, retired whole. | Permanent. | **Cycle numbering:** `N` is one higher than the **highest** `cycle-<N>.md` already in `trail/sdd/`. List the directory and match names of exactly the form `cycle-<N>.md`; every other file in that folder (`run-…`, `self_answer-…`, anything else) is ignored, and a gap in the numbering does not matter. With none matching, `N` is `1`; create `trail/sdd/` if it is not there. Never overwrite an existing cycle. **The loop, repeated until clean:** 1. The run drafts the SDD and writes the companion with what it could not settle. 2. The **owner answers inline** — filling the answer slots whose names and shape are `sdd_open_issues_template.md`'s — and re-runs the skill. 3. The run **copies the answered companion whole to the next trail cycle**, folds the answers into the SDD, and rewrites the companion with only what is still unresolved. An answer the fold leaves unsettled still drops, and its residue is re-raised as a fresh item with an empty answer slot. 4. When the answers resolve everything, the run is the close: it folds, copies the answered companion to the trail, and **removes** the companion through the builder's `--rm`, never a hand-`rm`. **No open-issues file = the SDD is done.** The close needs the owner's answers already committed (Step 3 owns the rule); when they are not, the run changes nothing at all and asks for that commit. --- ## Inputs and where the files land Read each of these in full; the run is entitled to nothing it did not open. - **The SRS and the UXD** — `<Product path>/docs/SRS.md` and `<Product path>/docs/UXD.md`, status line included, plus **`<Product path>/docs/PRD.md`**. A missing one is not a halt: draft best-effort without it and raise it as an item for the seat that owns that document. What a `Draft` or unreadable status means for the derivation is `<CORE>/doctrine/governance/unsettled_inputs.md`'s rule. - **`system/projects/<name>/agari.md`** — the declared terminus, the scope boundary. Its absence does not halt the run. - **`system/projects/<name>/doctrine/`** — `<name>_doctrine.md` and `ai_responsibility.md`, when present. - **`<Product path>/docs/definition_brief.md`** — when present. - **`system/doctrine/writing_bar.md`** — the writing bar every document this instance authors follows. - **`<Product path>/docs/adr/` and `nfdr.md`** — when present; the lens says why. - **`<CORE>/templates/product-templates/sdd_template.md`** — the shape and the table of who decides what. - **`system/projects/<name>/project.md`** — the card. Its `Product path:` resolves where every output lands; the field is the card template's (`<CORE>/templates/project_template.md`). - The existing `SDD.md`, `SDD_open_issues.md` and `trail/sdd/` — the loop's state (Step 1). **Path resolution.** A relative `Product path:` is inside the instance repo; an absolute one is outside it, in whatever repo holds the product. Every instance-relative path resolves from the instance repo root, the directory the session opened in; no step `cd`s away from it. If `Product path:` is a placeholder or awaits an owner value, halt and report — nothing can be filed. Never invent one. --- ## Workflow ### Step 1 — Identify the project, read current state Identify the target project; if more than one exists and the target is ambiguous, halt and report the candidates. Read the inputs above, and resolve **`<repo>`** from `Product path:` — the instance repo (`.`) for a relative path; for an absolute one, `git -C "<Product path>" rev-parse --show-toplevel`. Then read the loop's state: the existing SDD (the settled baseline a re-run holds stable), the companion if one exists, and `trail/sdd/` — a value the owner set in an earlier cycle is authorized, and changing it needs a fresh authorization. A first run has none of the three. ### Step 2 — Draft or revise the SDD, fold the answers, write the companion (no interview) **Gate first — detect the first closing touch before you write anything.** When a companion existed at intake, its inline answers would resolve everything unresolved, and the file is uncommitted (check its git cleanliness in `<repo>`), this run is the first closing touch and **writes nothing**: no draft or fold, no trail copy, no companion rewrite. Skip the rest of this step and Step 3, and report CLOSING at Step 4. Draft or revise `<Product path>/docs/SDD.md` by applying **`prompts/rich.md`** and the template. **Draft every part**, the ones the table gives to the CPO or the CDO included, from the inputs and any answer already in hand. For each such call the inputs leave unsettled, or that the draft needs the seat to confirm, raise an item in the companion carrying `- **Seat:** cpo` or `- **Seat:** cdo` — the seat the table names, not the seat that raised it. An item whose call is the CTO's carries `- **Seat:** cto` or no `Seat:` field. Write the companion from `sdd_open_issues_template.md`. **Consuming an answered companion.** A companion that existed at intake with at least one answer slot filled is **consumed**; what counts as an answer slot is the companion template's, read from its current shape. Three moves, in this order: copy the companion whole (an ordinary `cp`) to `trail/sdd/cycle-<N>.md` *before* the fold rewrites it; fold the answers into the SDD; then drop every
From eyalgo/kensaiapp, MIT.
More from eyalgo/kensaiapp
- 0.570score
development-content
eyalgo
Content-editor-posture skill for ongoing work.
SkillAFreshness: AClaude Code +9 - 0.570score
development-design
eyalgo
Architect-posture skill for ongoing work on an existing project.
SkillAFreshness: AClaude Code +9 - 0.565score
first-what-left
eyalgo
CPO-posture skill that writes a product's first what-left file, docs/what_left.md, once the project's Agari is settled.
SkillAFreshness: AClaude Code +9 - 0.565score
product-prd
Eyal Golan
CPO-posture skill that authors a project's PRD — the product source of truth and the head of the definition sequence.
SkillAFreshness: AClaude Code +9 - 0.565score
product-srs
Eyal Golan
CTO-posture skill that authors a project's SRS — the technical source of truth, written off the settled PRD alongside the CDO's UXD.
SkillAFreshness: AClaude Code +9 - 0.565score
refactor-for-optimize
eyalgo
Refactor code for performance — algorithmic complexity, data structure selection, unnecessary I/O, hot-path improvement, and memory usage.
SkillAFreshness: AClaude Code +9 - 0.565score
refactor-for-clarity
eyalgo
Refactor code for clarity without changing behavior.
SkillAFreshness: AClaude Code +9 - 0.565score
readme-status
eyalgo
Content-editor-posture skill that brings a product README's Status section up to what is built.
SkillAFreshness: AClaude Code +9 - 0.561score
refactor-for-reuse
eyalgo
Refactor changed code to eliminate duplication, extract shared logic, and remove dead code.
SkillAFreshness: AClaude Code +9 - 0.560score
product-content
Eyal Golan
Content-Manager-posture skill that authors a project's verbal language (CONTENT.md) — the standing source of truth for everything a product says to a person…
SkillAFreshness: AClaude Code +9 - 0.560score
experience-visual
Eyal Golan
CDO-posture skill that authors a kensaiapp instance's visual experience layer — the fence and the direction every product under that instance inherits…
SkillAFreshness: AClaude Code +9 - 0.560score
product-design
Eyal Golan
CDO-posture skill that authors a project's design language — the visual source of truth in Google's DESIGN.md format, written off the settled UXD's…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 19, 2026 (10 days ago)
- Last release
- Oct 22, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0.4
- License
- MIT
- Repository
- github.com/eyalgo/kensaiapp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Eyal Golan
- 0.565score
product-prd
Eyal Golan
CPO-posture skill that authors a project's PRD — the product source of truth and the head of the definition sequence.
SkillAFreshness: AClaude Code +9 - 0.565score
product-srs
Eyal Golan
CTO-posture skill that authors a project's SRS — the technical source of truth, written off the settled PRD alongside the CDO's UXD.
SkillAFreshness: AClaude Code +9 - 0.560score
project-agari
Eyal Golan
CPO-posture skill that declares a project's Agari (上がり) — the terminus that says when the product is complete or shipped.
SkillAFreshness: AClaude Code +9 - 0.560score
experience-voice
Eyal Golan
Content-Manager-posture skill that authors a kensaiapp instance's verbal experience layer — the limits and the inherited voice every product under that…
SkillAFreshness: AClaude Code +9 - 0.560score
product-uxd
Eyal Golan
CDO-posture skill that authors a project's UXD — the experience source of truth, written off the settled PRD alongside the CTO's SRS and read by the SDD.
SkillAFreshness: AClaude Code +9 - 0.560score
product-content
Eyal Golan
Content-Manager-posture skill that authors a project's verbal language (CONTENT.md) — the standing source of truth for everything a product says to a person…
SkillAFreshness: AClaude Code +9
Cite this page
product-sdd skill. Agent Mart. https://agentmart.dev/skills/eyalgo-product-sdd (last updated 2026-10-24)