DeepChat SDD
When To Use
Use this skill before substantial DeepChat source code, configuration, tests, docs, build
scripts, release workflows, or project structure changes that need shared context or a durable
decision record.
Skip SDD for trivial or tightly localized work unless the developer explicitly asks for it:
- visual/style fixes, copy changes, and small UI layout adjustments
- simple localized logic changes with a clear owner module
- routine docs edits that do not change project direction
- release metadata already covered by the release flow
If the scope is unclear, inspect first and then ask whether SDD is wanted instead of creating
artifacts by default.
Classify The Goal
Create one kebab-case folder per goal:
- New capability, user-visible behavior, integration, or tool large enough to need a shared plan:
docs/features/<goal>/
- Complex bug, regression, failing test, CI failure, reliability problem, or prompt/runtime issue:
docs/issues/<goal>/
- Refactor, migration, dependency boundary, shared contract, runtime architecture, or cross-module
design:
docs/architecture/<goal>/
If one request contains multiple independent goals, split them into separate folders. Keep current architecture reference docs such as docs/architecture/agent-system.md in place; use subfolders for new architecture targets.
Treat a bug as SDD-worthy only when the root cause, blast radius, or fix path is complex enough that
future developers benefit from the written record. For simple style defects or obvious local logic
fixes, skip docs/issues/* and implement directly.
If a bug fix introduces a new user-visible capability, data migration, public contract, or
cross-module redesign, classify the work as feature or architecture instead.
Required Artifacts
Feature and architecture goals use two artifacts:
spec.md: the normative RFC covering context, goals, non-goals, design, ownership, interfaces,
data flow, invariants, compatibility, acceptance criteria, and open questions
plan.md: ordered implementation steps and live completion state, followed by whole-change
review, validation selection, cleanup, and quality gates
Do not create tasks.md. The plan is the only execution tracker.
Complex bug goals normally use one file:
spec.md: issue description, impact, root cause or suspected location, fix design, concise
implementation checklist, validation outcome, and linked GitHub issue if one exists
Add plan.md only when a complex bug has multiple independently trackable implementation slices.
Never add tasks.md.
Resolve every [NEEDS CLARIFICATION] marker before implementation. If the requested change is tiny,
prefer skipping SDD over creating a token artifact.
Artifact Boundaries
Write spec.md as an RFC. It must explain enough implementation direction to constrain local code
decisions without becoming a file-by-file task list. Acceptance criteria describe observable
outcomes or independently verifiable contracts, not a test inventory.
Use plan.md as both plan and task tracker. Organize it into ordered checkbox sections whose steps
are coherent, reviewable implementation slices. Include the objective, ownership boundary,
essential guidance, dependencies when any, and completion condition. Reference the spec instead of
repeating its design.
GitHub Issue Sync
Do not sync GitHub issues by default. Issue sync is a follow-up record, not a gate for local SDD or
implementation.
Only create or link a GitHub issue when the developer explicitly asks, or after asking and getting
approval once the SDD artifacts are written or the implementation is complete.
Eligible work:
- Complex bugs only; simple style defects and obvious local logic fixes should not get issues.
- Whole new features or major feature rewrites only; single actions, small behavior tweaks, and
ordinary adjustments should not get issues.
If eligibility is unclear, ask the developer after the work is understood. Never self-authorize issue
creation just because local gh is installed and authenticated.
When approved:
- Feature issues use the
[feature] label.
- Bug issues use the
[bug] label.
- Create the label first if it is missing and
gh has permission.
- Record the issue URL or number in the SDD artifact.
- If
gh is unavailable or unauthorized, continue local-only and note that no GitHub issue was
created only when sync was requested or approved.
When creating a PR for linked work, include Closes #NNN in the PR body so GitHub closes the issue
automatically after merge.
Workflow
- Inspect the current code and docs first.
- Decide whether the work is substantial enough for SDD; skip artifacts for trivial/local changes.
- Pick the target folder from the classification rules when SDD is needed.
- Write or update the RFC and resolve every question that could change the implementation.
- For feature, architecture, or multi-slice bug work, write one ordered implementation plan
without a separate task list or upfront test matrix.
- Keep the implementation aligned with existing DeepChat patterns:
- main process Presenter boundaries
- typed
shared/contracts/*
- renderer
api/*Client
- Vue 3 Composition API and i18n for UI strings
- For architecture work that changes or replaces a historical feature, update that feature's
retained
spec.md if it is still a maintained contract.
- Complete the planned implementation before deciding whether to author new test code. Existing
checks may run at any time.
- Review the whole change against the spec for hidden side effects, compatibility, failure
behavior, performance, security, naming, and maintenance cost.
- Select the smallest useful validation, remove temporary verification, and add durable tests
only for qualifying behavior or contracts.
- Update
plan.md or the complex-bug spec checklist as coherent implementation slices land.
- Ask whether to sync an eligible GitHub issue only after the docs or implementation clarify the
scope, unless the developer already requested issue sync.
- Run
pnpm run format, pnpm run i18n, pnpm run lint, and pnpm run typecheck before handoff
when app code, tests, i18n, or project docs changed.
Implementation-First Validation
Implementation-first means finishing the planned implementation before deciding whether to author
new tests. It does not prohibit running existing tests, type checking, linting, builds, or manual
checks during development.
New test code before implementation is exceptional. Use it only when the developer requests TDD, a
minimal executable reproduction is required to understand a complex failure, or migration,
concurrency, recovery, or protocol compatibility needs characterization of current behavior. Record
the reason in one sentence in plan.md or the complex-bug spec.
After implementation, choose among:
- existing tests and static or build checks;
- temporary probes, scripts, or tests that must be removed before handoff; and
- the smallest durable regression tests for user-visible behavior, documented cross-module
contracts, persistence or migration, lifecycle or concurrency, recovery, security boundaries, or
proven regressions.
Do not retain tests that mirror private control flow, assert incidental call order, duplicate the
implementation through mocks, or exist only to increase coverage. Prefer no new test to a
low-value implementation-coupled test.
Documentation Hygiene
- Do not perform broad SDD cleanup during ordinary feature, bug, or architecture work.
- Use the separate
deepchat-sdd-cleanup skill only when the developer explicitly asks to clean or
organize SDD documentation.
- Treat existing
tasks.md files as legacy and migrate them only when that goal is actively
updated. Merge remaining work into an existing plan.md; without one, keep a single-slice complex
bug checklist in spec.md and create plan.md for feature, architecture, or multi-slice bug work.
Do not perform a repository-wide migration during unrelated work.
- During the current goal, update directly affected historical specs when they remain active
contracts.
1---2name: deepchat-sdd3description: Use before substantial DeepChat code, configuration, documentation, test, build, feature, issue, refactor, or architecture changes that need a durable RFC and an explicit execution path. Skip trivial style fixes, small localized logic changes, routine docs edits, and simple bugs unless the developer asks for SDD. Use plan.md as the only separate tracker when needed, default to implementation-first validation, and ask before optional GitHub issue sync unless the developer explicitly requested sync.4---5
6# DeepChat SDD
7
8## When To Use
9
10Use this skill before substantial DeepChat source code, configuration, tests, docs, build
11scripts, release workflows, or project structure changes that need shared context or a durable
12decision record.
13
14Skip SDD for trivial or tightly localized work unless the developer explicitly asks for it:
15
16- visual/style fixes, copy changes, and small UI layout adjustments
17- simple localized logic changes with a clear owner module
18- routine docs edits that do not change project direction
19- release metadata already covered by the release flow
20
21If the scope is unclear, inspect first and then ask whether SDD is wanted instead of creating
22artifacts by default.
23
24## Classify The Goal
25
26Create one kebab-case folder per goal:
27
28- New capability, user-visible behavior, integration, or tool large enough to need a shared plan:
29 `docs/features/<goal>/`
30- Complex bug, regression, failing test, CI failure, reliability problem, or prompt/runtime issue:
31 `docs/issues/<goal>/`
32- Refactor, migration, dependency boundary, shared contract, runtime architecture, or cross-module
33 design: `docs/architecture/<goal>/`
34
35If one request contains multiple independent goals, split them into separate folders. Keep current architecture reference docs such as `docs/architecture/agent-system.md` in place; use subfolders for new architecture targets.
36
37Treat a bug as SDD-worthy only when the root cause, blast radius, or fix path is complex enough that
38future developers benefit from the written record. For simple style defects or obvious local logic
39fixes, skip `docs/issues/*` and implement directly.
40
41If a bug fix introduces a new user-visible capability, data migration, public contract, or
42cross-module redesign, classify the work as feature or architecture instead.
43
44## Required Artifacts
45
46Feature and architecture goals use two artifacts:
47
48- `spec.md`: the normative RFC covering context, goals, non-goals, design, ownership, interfaces,
49 data flow, invariants, compatibility, acceptance criteria, and open questions
50- `plan.md`: ordered implementation steps and live completion state, followed by whole-change
51 review, validation selection, cleanup, and quality gates
52
53Do not create `tasks.md`. The plan is the only execution tracker.
54
55Complex bug goals normally use one file:
56
57- `spec.md`: issue description, impact, root cause or suspected location, fix design, concise
58 implementation checklist, validation outcome, and linked GitHub issue if one exists
59
60Add `plan.md` only when a complex bug has multiple independently trackable implementation slices.
61Never add `tasks.md`.
62
63Resolve every `[NEEDS CLARIFICATION]` marker before implementation. If the requested change is tiny,
64prefer skipping SDD over creating a token artifact.
65
66## Artifact Boundaries
67
68Write `spec.md` as an RFC. It must explain enough implementation direction to constrain local code
69decisions without becoming a file-by-file task list. Acceptance criteria describe observable
70outcomes or independently verifiable contracts, not a test inventory.
71
72Use `plan.md` as both plan and task tracker. Organize it into ordered checkbox sections whose steps
73are coherent, reviewable implementation slices. Include the objective, ownership boundary,
74essential guidance, dependencies when any, and completion condition. Reference the spec instead of
75repeating its design.
76
77## GitHub Issue Sync
78
79Do not sync GitHub issues by default. Issue sync is a follow-up record, not a gate for local SDD or
80implementation.
81
82Only create or link a GitHub issue when the developer explicitly asks, or after asking and getting
83approval once the SDD artifacts are written or the implementation is complete.
84
85Eligible work:
86
87- Complex bugs only; simple style defects and obvious local logic fixes should not get issues.
88- Whole new features or major feature rewrites only; single actions, small behavior tweaks, and
89 ordinary adjustments should not get issues.
90
91If eligibility is unclear, ask the developer after the work is understood. Never self-authorize issue
92creation just because local `gh` is installed and authenticated.
93
94When approved:
95
96- Feature issues use the `[feature]` label.
97- Bug issues use the `[bug]` label.
98- Create the label first if it is missing and `gh` has permission.
99- Record the issue URL or number in the SDD artifact.
100- If `gh` is unavailable or unauthorized, continue local-only and note that no GitHub issue was
101 created only when sync was requested or approved.
102
103When creating a PR for linked work, include `Closes #NNN` in the PR body so GitHub closes the issue
104automatically after merge.
105
106## Workflow
107
1081. Inspect the current code and docs first.
1092. Decide whether the work is substantial enough for SDD; skip artifacts for trivial/local changes.
1103. Pick the target folder from the classification rules when SDD is needed.
1114. Write or update the RFC and resolve every question that could change the implementation.
1125. For feature, architecture, or multi-slice bug work, write one ordered implementation plan
113 without a separate task list or upfront test matrix.
1146. Keep the implementation aligned with existing DeepChat patterns:
115 - main process Presenter boundaries
116 - typed `shared/contracts/*`
117 - renderer `api/*Client`
118 - Vue 3 Composition API and i18n for UI strings
1197. For architecture work that changes or replaces a historical feature, update that feature's
120 retained `spec.md` if it is still a maintained contract.
1218. Complete the planned implementation before deciding whether to author new test code. Existing
122 checks may run at any time.
1239. Review the whole change against the spec for hidden side effects, compatibility, failure
124 behavior, performance, security, naming, and maintenance cost.
12510. Select the smallest useful validation, remove temporary verification, and add durable tests
126 only for qualifying behavior or contracts.
12711. Update `plan.md` or the complex-bug spec checklist as coherent implementation slices land.
12812. Ask whether to sync an eligible GitHub issue only after the docs or implementation clarify the
129 scope, unless the developer already requested issue sync.
13013. Run `pnpm run format`, `pnpm run i18n`, `pnpm run lint`, and `pnpm run typecheck` before handoff
131 when app code, tests, i18n, or project docs changed.
132
133## Implementation-First Validation
134
135Implementation-first means finishing the planned implementation before deciding whether to author
136new tests. It does not prohibit running existing tests, type checking, linting, builds, or manual
137checks during development.
138
139New test code before implementation is exceptional. Use it only when the developer requests TDD, a
140minimal executable reproduction is required to understand a complex failure, or migration,
141concurrency, recovery, or protocol compatibility needs characterization of current behavior. Record
142the reason in one sentence in `plan.md` or the complex-bug spec.
143
144After implementation, choose among:
145
146- existing tests and static or build checks;
147- temporary probes, scripts, or tests that must be removed before handoff; and
148- the smallest durable regression tests for user-visible behavior, documented cross-module
149 contracts, persistence or migration, lifecycle or concurrency, recovery, security boundaries, or
150 proven regressions.
151
152Do not retain tests that mirror private control flow, assert incidental call order, duplicate the
153implementation through mocks, or exist only to increase coverage. Prefer no new test to a
154low-value implementation-coupled test.
155
156## Documentation Hygiene
157
158- Do not perform broad SDD cleanup during ordinary feature, bug, or architecture work.
159- Use the separate `deepchat-sdd-cleanup` skill only when the developer explicitly asks to clean or
160 organize SDD documentation.
161- Treat existing `tasks.md` files as legacy and migrate them only when that goal is actively
162 updated. Merge remaining work into an existing `plan.md`; without one, keep a single-slice complex
163 bug checklist in `spec.md` and create `plan.md` for feature, architecture, or multi-slice bug work.
164 Do not perform a repository-wide migration during unrelated work.
165- During the current goal, update directly affected historical specs when they remain active
166 contracts.