showdar-skills 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +22 -2
- package/bin/showdar.js +29 -5
- package/package.json +1 -1
- package/profiles/backend.json +1 -1
- package/profiles/developer.json +1 -1
- package/profiles/full.json +1 -1
- package/profiles/product.json +1 -1
- package/profiles/qa.json +1 -1
- package/router/triggers.yaml +1 -0
- package/skills/showdar-build/SKILL.md +9 -0
- package/skills/showdar-design/SKILL.md +8 -0
- package/skills/showdar-domain-model/SKILL.md +117 -0
- package/skills/showdar-domain-model/references/adr.md +7 -0
- package/skills/showdar-domain-model/references/glossary.md +7 -0
- package/skills/showdar-feature/SKILL.md +13 -0
- package/skills/showdar-insurance-domain/SKILL.md +5 -0
- package/skills/showdar-plan/SKILL.md +8 -0
- package/skills/showdar-quality/SKILL.md +6 -0
- package/skills/showdar-refine/SKILL.md +120 -0
- package/skills/showdar-refine/references/approval-handoff.md +11 -0
- package/skills/showdar-refine/references/questioning.md +9 -0
- package/skills/showdar-requirements/SKILL.md +8 -0
- package/skills/showdar-review/SKILL.md +8 -0
- package/skills/showdar-setup/SKILL.md +116 -0
- package/skills/showdar-setup/references/context-audit.md +11 -0
- package/skills/showdar-understand/SKILL.md +7 -0
- package/src/adapter-renderers.js +1 -23
- package/src/catalog.js +14 -6
- package/src/pack-inspect.js +2 -2
- package/src/pack-plan.js +62 -41
- package/src/project.js +143 -46
- package/src/route-plan.js +0 -40
- package/src/self-update.js +97 -0
- package/src/validate.js +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.16.0]
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Three portable first-class companion skills: `showdar-setup`, `showdar-refine`, and `showdar-domain-model`; native skills-only users no longer need the CLI for onboarding, refinement, or glossary/ADR guidance.
|
|
14
|
+
- Conditional refinement with explicit spec approval, adaptive Decision Brief persistence, and approval-bound architectural/domain documentation.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Companion catalog, profiles and validations support 25 installable skills while retaining 18 lifecycle primitives and 4 workflows.
|
|
19
|
+
- Existing lifecycle skills consume approved briefs and canonical glossary/ADR context without adding a second router.
|
|
20
|
+
- CLI installation migrates away from the legacy generated `/showdar-setup` command toward the portable skill with owned-file safety checks.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [0.15.1]
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Reject malformed or unauthorized managed paths before removing project files; block symlink-based command writes and preflight installation collisions before replacing existing skills.
|
|
28
|
+
- Make extension pack updates fail closed on conflicts and installed drift, stage changes safely, restore the previous installation on failure, remove obsolete owned files and clean staging directories.
|
|
29
|
+
- Separate source pack identity from installed-tree hashes to avoid false drift reports when source-only documentation is not installed.
|
|
30
|
+
- Ensure adding an existing skill to another AI target installs that target, and return nonzero exit codes for failed JSON diagnostics.
|
|
31
|
+
- Correct `create-pack` destination handling and adapt the Codex benchmark to the current structural routing contract.
|
|
32
|
+
- Remove unused legacy scoring helpers from the thin router.
|
|
33
|
+
|
|
34
|
+
### Tests
|
|
35
|
+
|
|
36
|
+
- Add regression coverage for destructive manifest paths, symlink boundaries, failed replacements, pack drift and updates, CLI diagnostics, target switching, scaffold paths, and Codex benchmark guidance.
|
|
37
|
+
|
|
38
|
+
|
|
9
39
|
## [0.15.0]
|
|
10
40
|
|
|
11
41
|
### Changed
|
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ showdar doctor
|
|
|
24
24
|
| Agent setup | Analyze the repository, propose grounded shared context, and update docs after approval. |
|
|
25
25
|
| `doctor` | Check the installation and flag problems. |
|
|
26
26
|
|
|
27
|
-
**
|
|
27
|
+
**Portable skills:** native agent discovery works with `npx skills add caongocquy/showdar-skills` without the Showdar CLI. Invoke `showdar-setup` by name (or `/showdar-setup` where the agent supports skill slash-invocation). **CLI:** `showdar setup` remains the interactive installer. The setup skill audits project context and proposes Glossary changes with explicit approval; ADRs require actual decisions.
|
|
28
28
|
|
|
29
29
|
Already configured? Just give the coding agent a normal task, such as *"Fix the checkout validation bug and add regression tests."* Showdar guidance routes requests to the relevant installed skills; you do not need to call each skill manually.
|
|
30
30
|
|
|
@@ -40,6 +40,26 @@ showdar doctor
|
|
|
40
40
|
|
|
41
41
|
**Install vs. configure:** `showdar init` installs/replaces a skill selection, `showdar add` extends it, and `showdar setup` is the interactive installer. Project context is created or enriched by the AI agent using repository evidence and explicit approval; the CLI `showdar setup` runs the interactive installer and does not generate project context.
|
|
42
42
|
|
|
43
|
+
## Portable companions
|
|
44
|
+
|
|
45
|
+
- `showdar-setup`: repository evidence audit, project context onboarding and optional glossary bootstrap; user approval before writing.
|
|
46
|
+
- `showdar-refine`: conditional questioning for material ambiguity. After refinement starts, a complete Decision Brief must receive explicit approval before implementation; skip when work is already defined.
|
|
47
|
+
- `showdar-domain-model`: read canonical terminology and ADRs when relevant; propose edits for accepted domain definitions or real architecture decisions, and write only after approval.
|
|
48
|
+
|
|
49
|
+
Companions are native-discoverable and first-class installable skills, not primary lifecycle routes. `showdar-feature` consults refine only when decisions can alter behavior, and handoff reuses approved specs rather than asking again. Specs follow adaptive persistence: use existing canonical tickets/docs first; create a durable spec for complex cross-session work, and keep small same-session briefs in conversation.
|
|
50
|
+
|
|
51
|
+
## Version and updates
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
showdar -v # Also supports --version and -V
|
|
55
|
+
showdar update # Auto-detect npm, pnpm, or Homebrew global installation
|
|
56
|
+
showdar upgrade # Alias of update
|
|
57
|
+
showdar update --dry-run # Preview without changing anything
|
|
58
|
+
showdar update --manager npm # Explicit override: npm, pnpm, brew
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`update` upgrades the globally installed Showdar CLI via the detected package manager and does **not** automatically rewrite skill copies in existing projects. When a package manager cannot be safely identified (for example, local source checkouts or ephemeral `npx` installs), it stops and prints manual installation options. Installing only portable skills through `npx skills add` does not install the Showdar CLI. Use `showdar update-pack` for extension packs; it is separate from updating the CLI.
|
|
62
|
+
|
|
43
63
|
## How it works
|
|
44
64
|
|
|
45
65
|
```text
|
|
@@ -50,7 +70,7 @@ User task
|
|
|
50
70
|
-> Execute / verify / report
|
|
51
71
|
```
|
|
52
72
|
|
|
53
|
-
Showdar ships **18
|
|
73
|
+
Showdar ships **18 lifecycle primitives**, **3 portable companion** and **4 workflow** skills, including optional insurance-domain coverage. Only relevant instructions and references are loaded as needed.
|
|
54
74
|
|
|
55
75
|
Before local source/config/docs changes, follow the project's Git policy and run `showdar guard --mutation local-write --json`; work on a task branch when required. Routing and onboarding do not grant permission to commit, merge, push, or deploy.
|
|
56
76
|
|
package/bin/showdar.js
CHANGED
|
@@ -8,11 +8,12 @@ import { routeRequest, formatRoute } from '../src/runtime-route.js';
|
|
|
8
8
|
import { homedir } from 'node:os';
|
|
9
9
|
import { readFile } from 'node:fs/promises';
|
|
10
10
|
import { fileURLToPath } from 'node:url';
|
|
11
|
-
import { AI_TARGETS, PRIMITIVE_COUNT, PROFILE_ALIASES, PROFILES, SKILLS, TOTAL_COUNT, WORKFLOW_COUNT, canonicalProfile, isDeprecatedProfile, resolveProfile, getWorkflow, normalizeSkillName } from '../src/catalog.js';
|
|
11
|
+
import { AI_TARGETS, COMPANION_SKILLS, PRIMITIVE_COUNT, PROFILE_ALIASES, PROFILES, SKILLS, TOTAL_COUNT, WORKFLOW_COUNT, canonicalProfile, isDeprecatedProfile, resolveProfile, getWorkflow, normalizeSkillName } from '../src/catalog.js';
|
|
12
12
|
import { addPack, addSkill, addSkills, addWorkflow, globalManifestPath, initGlobal, initProject, inspectGlobal, inspectProject, listExtensions, listExtensionsDetailed, removeGlobal, removePack, removeProject, validatePackSource, createPack, inspectPack, doctor, updatePack, readProjectOverrides } from '../src/project.js';
|
|
13
13
|
import { formatPlanPreviewHuman, projectPackUpdatePreview } from '../src/pack-plan.js';
|
|
14
14
|
import { assessCheckpointAgainstCandidate } from '../src/pack-inspect.js';
|
|
15
15
|
import { validateRepository } from '../src/validate.js';
|
|
16
|
+
import { detectGlobalRoots, planSelfUpdate, executeSelfUpdate } from '../src/self-update.js';
|
|
16
17
|
|
|
17
18
|
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
18
19
|
const COMMANDS = ['understand', 'plan', 'design', 'build', 'debug', 'test', 'review', 'upgrade', 'ship', 'recover', 'git', 'requirements', 'quality', 'security', 'ops', 'skill'];
|
|
@@ -50,6 +51,10 @@ function printHelp(version, command = null) {
|
|
|
50
51
|
console.log('Usage: showdar guard --mutation <read-only|local-write> [--json]');
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
54
|
+
if (command === 'update' || command === 'upgrade') {
|
|
55
|
+
console.log('Usage: showdar update [--manager npm|pnpm|brew] [--dry-run]\nAlias: showdar upgrade\nUpdates the globally installed Showdar CLI package; does not overwrite project-installed skills.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
53
58
|
if (command === 'setup') {
|
|
54
59
|
console.log('Usage: showdar setup [--mode add|replace] [--profile name] [--skills comma,list] [--workflow comma,list] [--ai target] [--scope project|global] [--yes|--dry-run] [--json]');
|
|
55
60
|
return;
|
|
@@ -66,7 +71,7 @@ function printHelp(version, command = null) {
|
|
|
66
71
|
console.log(`Showdar Skills ${version}\n\nUsage:\n showdar add <skill> [--ai <target>] [--scope <project|global>]\n showdar add profile <profile> [--ai <target>] [--scope <project|global>]\n showdar add workflow <builtin-name|local-json-path> [--ai <target>] [--scope <project|global>]\n\nExamples:\n showdar add git\n showdar add showdar-git\n showdar add profile insurance\n showdar add workflow feature\n showdar add workflow ./workflows/acme-release.json\n\nAdd preserves installed skills; init replaces the managed set. Built-in workflows add required stages.`);
|
|
67
72
|
return;
|
|
68
73
|
}
|
|
69
|
-
console.log(`Showdar Skills ${version}\n\nUsage:\n showdar init ${scopeUsage} [--profile <name>] [--ai <universal|codex|opencode|cursor|claude|all>] [--pack <local-path>]\n showdar add <skill> [--ai <target>] [--scope <project|global>]\n showdar add profile <profile> [--ai <target>] [--scope <project|global>]\n showdar add workflow <builtin-name|local-json-path> [--ai <target>] [--scope <project|global>]\n showdar route (--stdin | --prompt <text>) [--json]\n showdar git-start --type <type> --name <task> [--base <branch>] [--dry-run] [--json]\n showdar guard --mutation <read-only|local-write> [--json]\n showdar setup [--mode add|replace] [--profile <name>] [--skills <names>] [--workflow <names>] [--ai <target>] [--scope <project|global>] [--yes|--dry-run]\n showdar add-pack <local-path>\n showdar remove-pack <name>\n showdar add-workflow <local-path>\n showdar status ${scopeUsage}\n showdar doctor ${scopeUsage}\n showdar validate\n showdar list [--extensions]\n showdar remove ${scopeUsage}\n showdar create-pack <path> [--vendor <vendor>] [--description <text>] [--with-workflow <id>] [--with-profile <name>]\n showdar validate-pack <local-path> [--json]\n showdar inspect-pack <local-path> [--json] [--checkpoint <file>]\n showdar doctor ${scopeUsage} [--extensions] [--json]\n showdar update-pack <local-path> [--dry-run] [--json]\n showdar validate\n showdar list [--extensions] [--json]\n showdar remove ${scopeUsage}\n\nExtension packs accept local directories/workspace paths only; tarball, URL, Git, and registry sources are rejected.\n\nDefaults: scope project, profile full, AI target universal.\nProfiles: ${Object.keys(PROFILES).join(', ')}\nDeprecated aliases: ${Object.entries(PROFILE_ALIASES).map(([alias, target]) => `${alias} -> ${target}`).join(', ')}\nAI targets: ${AI_TARGETS.join(', ')}`);
|
|
74
|
+
console.log(`Showdar Skills ${version}\n\nUsage:\n showdar init ${scopeUsage} [--profile <name>] [--ai <universal|codex|opencode|cursor|claude|all>] [--pack <local-path>]\n showdar add <skill> [--ai <target>] [--scope <project|global>]\n showdar add profile <profile> [--ai <target>] [--scope <project|global>]\n showdar add workflow <builtin-name|local-json-path> [--ai <target>] [--scope <project|global>]\n showdar route (--stdin | --prompt <text>) [--json]\n showdar git-start --type <type> --name <task> [--base <branch>] [--dry-run] [--json]\n showdar guard --mutation <read-only|local-write> [--json]\n showdar -v | --version\n showdar update [--manager npm|pnpm|brew] [--dry-run]\n showdar upgrade [--manager npm|pnpm|brew] [--dry-run]\n showdar setup [--mode add|replace] [--profile <name>] [--skills <names>] [--workflow <names>] [--ai <target>] [--scope <project|global>] [--yes|--dry-run]\n showdar add-pack <local-path>\n showdar remove-pack <name>\n showdar add-workflow <local-path>\n showdar status ${scopeUsage}\n showdar doctor ${scopeUsage}\n showdar validate\n showdar list [--extensions]\n showdar remove ${scopeUsage}\n showdar create-pack <path> [--vendor <vendor>] [--description <text>] [--with-workflow <id>] [--with-profile <name>]\n showdar validate-pack <local-path> [--json]\n showdar inspect-pack <local-path> [--json] [--checkpoint <file>]\n showdar doctor ${scopeUsage} [--extensions] [--json]\n showdar update-pack <local-path> [--dry-run] [--json]\n showdar validate\n showdar list [--extensions] [--json]\n showdar remove ${scopeUsage}\n\nExtension packs accept local directories/workspace paths only; tarball, URL, Git, and registry sources are rejected.\n\nDefaults: scope project, profile full, AI target universal.\nProfiles: ${Object.keys(PROFILES).join(', ')}\nDeprecated aliases: ${Object.entries(PROFILE_ALIASES).map(([alias, target]) => `${alias} -> ${target}`).join(', ')}\nAI targets: ${AI_TARGETS.join(', ')}`);
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
async function main() {
|
|
@@ -76,12 +81,28 @@ async function main() {
|
|
|
76
81
|
const version = await packageVersion();
|
|
77
82
|
|
|
78
83
|
if (command === 'help' || command === '--help' || command === '-h') return printHelp(version);
|
|
79
|
-
|
|
84
|
+
if (command === '--version' || command === '-V' || command === '-v') {
|
|
80
85
|
console.log(version);
|
|
81
86
|
return;
|
|
82
87
|
}
|
|
83
88
|
if (!['route', 'git-start', 'guard'].includes(command) && (args.includes('--help') || args.includes('-h'))) return printHelp(version, command);
|
|
84
89
|
|
|
90
|
+
if (command === 'update' || command === 'upgrade') {
|
|
91
|
+
const { values, positionals } = parseArgs({ args: args.slice(1), allowPositionals: true,
|
|
92
|
+
options: { manager: { type: 'string' }, 'dry-run': { type: 'boolean' } } });
|
|
93
|
+
if (positionals.length) throw new Error('Unexpected update arguments: ' + positionals.join(' '));
|
|
94
|
+
const manager = values.manager ?? null;
|
|
95
|
+
const roots = manager ? {} : detectGlobalRoots();
|
|
96
|
+
const plan = planSelfUpdate({ packageRoot, manager, roots });
|
|
97
|
+
console.log('Showdar Skills ' + version + ' (installed via ' + plan.manager + ')');
|
|
98
|
+
console.log('Update command: ' + [plan.command, ...plan.args].join(' '));
|
|
99
|
+
if (values['dry-run']) return;
|
|
100
|
+
await executeSelfUpdate(plan);
|
|
101
|
+
console.log('Showdar package update completed. Run showdar -v to verify the installed version.');
|
|
102
|
+
console.log('Project-installed skill copies are not changed. Refresh them separately using the existing Showdar installer.');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
85
106
|
const scope = ['init', 'status', 'doctor', 'remove', 'add'].includes(command) ? scopeAfter(args) : null;
|
|
86
107
|
|
|
87
108
|
if (command === 'setup' || (command === 'add' && args.includes('--interactive'))) {
|
|
@@ -177,7 +198,7 @@ async function main() {
|
|
|
177
198
|
return;
|
|
178
199
|
}
|
|
179
200
|
console.log(`Profiles: ${Object.keys(PROFILES).join(', ')}\nDeprecated aliases: ${Object.entries(PROFILE_ALIASES).map(([alias, target]) => `${alias} -> ${target}`).join(', ')}\n\nSkills:`);
|
|
180
|
-
for (const skill of SKILLS) console.log(` ${skill.id} [${skill.domain}] ${skill.description}`);
|
|
201
|
+
for (const skill of [...SKILLS, ...COMPANION_SKILLS]) console.log(` ${skill.id} [${skill.kind}/${skill.domain}] ${skill.description}`);
|
|
181
202
|
return;
|
|
182
203
|
}
|
|
183
204
|
|
|
@@ -252,11 +273,12 @@ async function main() {
|
|
|
252
273
|
console.log(JSON.stringify({
|
|
253
274
|
schemaVersion: 1,
|
|
254
275
|
command: 'doctor',
|
|
255
|
-
ok:
|
|
276
|
+
ok: result.healthy,
|
|
256
277
|
data: { ...result, checkpointCompatibility: 'not-assessed' },
|
|
257
278
|
warnings: result.warnings ?? [],
|
|
258
279
|
errors: [],
|
|
259
280
|
}, null, 2));
|
|
281
|
+
if (!result.healthy) process.exitCode = 1;
|
|
260
282
|
return;
|
|
261
283
|
}
|
|
262
284
|
console.log(`Extension diagnostics\nHealth: ${result.healthy ? 'OK' : 'BROKEN'}`);
|
|
@@ -265,6 +287,7 @@ async function main() {
|
|
|
265
287
|
for (const issue of result.issues) console.log(`- ${issue}`);
|
|
266
288
|
for (const warning of result.warnings ?? []) console.log(`warning: ${warning}`);
|
|
267
289
|
if (!result.healthy) {
|
|
290
|
+
process.exitCode = 1;
|
|
268
291
|
console.log(`Checkpoint compatibility: not-assessed (supply a checkpoint via inspect-pack --checkpoint)`);
|
|
269
292
|
if (result.customWorkflows.length) console.log(`Note: checkpoints referencing changed workflow definitions will be revalidated on resume.`);
|
|
270
293
|
}
|
|
@@ -356,6 +379,7 @@ async function main() {
|
|
|
356
379
|
if (!packPath) throw new Error('Pack path is required. Usage: showdar validate-pack <local-path> [--json]');
|
|
357
380
|
const isJson = args.includes('--json');
|
|
358
381
|
const result = await validatePackSource({ cwd: projectRoot, source: packPath });
|
|
382
|
+
if (!result.ok) process.exitCode = 1;
|
|
359
383
|
if (isJson) {
|
|
360
384
|
console.log(JSON.stringify(result, null, 2));
|
|
361
385
|
} else {
|
package/package.json
CHANGED
package/profiles/backend.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"skills":["showdar-understand","showdar-plan","showdar-build","showdar-debug","showdar-test","showdar-review","showdar-upgrade","showdar-ship","showdar-recover","showdar-git","showdar-requirements","showdar-quality","showdar-security","showdar-ops"]}
|
|
1
|
+
{"skills":["showdar-understand","showdar-plan","showdar-build","showdar-debug","showdar-test","showdar-review","showdar-upgrade","showdar-ship","showdar-recover","showdar-git","showdar-requirements","showdar-quality","showdar-security","showdar-ops","showdar-setup","showdar-refine","showdar-domain-model"]}
|
package/profiles/developer.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"skills":["showdar-understand","showdar-plan","showdar-design","showdar-build","showdar-debug","showdar-test","showdar-review","showdar-upgrade","showdar-ship","showdar-recover","showdar-git","showdar-security"]}
|
|
1
|
+
{"skills":["showdar-understand","showdar-plan","showdar-design","showdar-build","showdar-debug","showdar-test","showdar-review","showdar-upgrade","showdar-ship","showdar-recover","showdar-git","showdar-security","showdar-setup","showdar-refine","showdar-domain-model"]}
|
package/profiles/full.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"skills":["showdar-understand","showdar-plan","showdar-design","showdar-build","showdar-debug","showdar-test","showdar-review","showdar-upgrade","showdar-ship","showdar-recover","showdar-git","showdar-requirements","showdar-quality","showdar-security","showdar-ops","showdar-insurance-domain","showdar-insurance-workflows","showdar-insurance-review"]}
|
|
1
|
+
{"skills":["showdar-understand","showdar-plan","showdar-design","showdar-build","showdar-debug","showdar-test","showdar-review","showdar-upgrade","showdar-ship","showdar-recover","showdar-git","showdar-requirements","showdar-quality","showdar-security","showdar-ops","showdar-insurance-domain","showdar-insurance-workflows","showdar-insurance-review","showdar-setup","showdar-refine","showdar-domain-model"]}
|
package/profiles/product.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"skills":["showdar-understand","showdar-requirements","showdar-plan","showdar-design","showdar-quality","showdar-review"]}
|
|
1
|
+
{"skills":["showdar-understand","showdar-requirements","showdar-plan","showdar-design","showdar-quality","showdar-review","showdar-setup","showdar-refine","showdar-domain-model"]}
|
package/profiles/qa.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"skills":["showdar-understand","showdar-requirements","showdar-quality","showdar-test","showdar-debug","showdar-review","showdar-ship","showdar-recover","showdar-git"]}
|
|
1
|
+
{"skills":["showdar-understand","showdar-requirements","showdar-quality","showdar-test","showdar-debug","showdar-review","showdar-ship","showdar-recover","showdar-git","showdar-setup","showdar-refine","showdar-domain-model"]}
|
package/router/triggers.yaml
CHANGED
|
@@ -17,6 +17,7 @@ priority:
|
|
|
17
17
|
- showdar-understand
|
|
18
18
|
- showdar-test
|
|
19
19
|
- showdar-build
|
|
20
|
+
# Portable companions are invoked by native discovery or lifecycle skill guidance, not canonical priority.
|
|
20
21
|
rules:
|
|
21
22
|
- if root cause is unknown prefer showdar-debug over showdar-build
|
|
22
23
|
- if requirements or change surface are unresolved prefer showdar-plan over showdar-build
|
|
@@ -51,6 +51,15 @@ Before any task-owned source/config/test/docs write, apply `showdar-git` branch
|
|
|
51
51
|
- Add/adjust tests at the lowest level that can fail for the intended regression/behavior.
|
|
52
52
|
- Do not rewrite unrelated formatting or files.
|
|
53
53
|
|
|
54
|
+
## Approved decision boundaries
|
|
55
|
+
|
|
56
|
+
- Read the current approved feature brief, canonical glossary and relevant accepted ADRs if they exist.
|
|
57
|
+
- When refinement has been triggered, require explicit approval of the whole brief revision before implementing; ordinary fully specified work does not incur a new approval gate.
|
|
58
|
+
- Preserve agreed domain names, behavior and non-goals in code; do not change accepted decisions silently.
|
|
59
|
+
- If implementation exposes a genuine conflict with an approved contract, stop and request approval for the affected decision before altering scope.
|
|
60
|
+
- Invoke installed `showdar-domain-model` only for a meaningful shared glossary/architecture update, with a separate proposed diff and approval.
|
|
61
|
+
- Do not assume `showdar route`, CLI install or workflow checkpoint grants mutation authority.
|
|
62
|
+
|
|
54
63
|
## Workflow
|
|
55
64
|
|
|
56
65
|
### Phase 1 — pre-change check
|
|
@@ -56,6 +56,14 @@ Before any task-owned source/config/test/docs write, apply `showdar-git` branch
|
|
|
56
56
|
- Maintain readable contrast, semantic labeling, focus order, reduced-motion behavior, and text scaling.
|
|
57
57
|
- Prefer existing design tokens/components when they meet the requirement.
|
|
58
58
|
|
|
59
|
+
## Approved design context
|
|
60
|
+
|
|
61
|
+
- Locate an approved feature brief, established design system and relevant accepted ADRs before proposing UI changes.
|
|
62
|
+
- Preserve approved behavior and product constraints instead of silently revising flow, terminology, or permission rules.
|
|
63
|
+
- When a design decision would materially change approved behavior, ask to reopen just that decision; use installed `showdar-refine` when a real interview is needed.
|
|
64
|
+
- If a shared term is newly accepted, propose canonical glossary updates through installed `showdar-domain-model` rather than duplicating vocabulary.
|
|
65
|
+
- Do not manufacture ADRs for routine visual preferences or minor component decisions.
|
|
66
|
+
|
|
59
67
|
## Workflow
|
|
60
68
|
|
|
61
69
|
### Mode selection
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: showdar-domain-model
|
|
3
|
+
description: Use when clarifying shared domain terminology, maintaining an evidence-backed glossary, or documenting confirmed architectural decisions as ADRs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Showdar Domain-Model
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
- Offer a standalone portable Agent Skill that works without any Showdar executable.
|
|
11
|
+
- Reuse existing repository conventions and the user's authoritative requirements.
|
|
12
|
+
- Separate observations, assumptions, proposals, approvals, and mutations.
|
|
13
|
+
- Keep outcomes useful for the next engineering stage without creating a second router.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
- Several modules use inconsistent names for the same domain concept.
|
|
18
|
+
- An agreed cross-feature definition, alias or state transition should be preserved.
|
|
19
|
+
- A meaningful architectural choice has been explicitly decided with alternatives and trade-offs.
|
|
20
|
+
|
|
21
|
+
## When not to use
|
|
22
|
+
|
|
23
|
+
- An isolated variable rename does not change canonical terminology.
|
|
24
|
+
- A UI preference has no project-wide architecture consequences.
|
|
25
|
+
- No meaningful domain or architectural decision occurred.
|
|
26
|
+
|
|
27
|
+
## Inputs and assumptions
|
|
28
|
+
|
|
29
|
+
- Read repository instructions and user-provided context before proposing changes.
|
|
30
|
+
- Prefer relevant source files, API schemas, tests, tickets, and existing documentation.
|
|
31
|
+
- Record conflicting evidence and ask the user about decisions that change meaning.
|
|
32
|
+
- Treat an existing artifact as canonical when repository conventions say so.
|
|
33
|
+
|
|
34
|
+
## Non-negotiable rules
|
|
35
|
+
|
|
36
|
+
- Never claim a user approved an unapproved proposal.
|
|
37
|
+
- Do not infer permission to edit files, commit, push, merge, publish, or deploy.
|
|
38
|
+
- Before edits, honor repository Git policy and prepare a safe task branch as required.
|
|
39
|
+
- If the Showdar CLI is available, run showdar guard --mutation local-write --json and require ok=true and data.allowed=true.
|
|
40
|
+
- If CLI is unavailable, perform Git and repository-policy checks manually; never auto-fetch a CLI with npx.
|
|
41
|
+
- Respect existing files and user modifications; show proposed changes before writes.
|
|
42
|
+
- Do not fabricate product decisions or source evidence.
|
|
43
|
+
- Use native skill discovery in skills-only installations without assuming router, manifest or CLI.
|
|
44
|
+
|
|
45
|
+
Read `references/glossary.md` and `references/adr.md` only when that depth of detail is needed; these references are packaged inside this skill for skills-only installers.
|
|
46
|
+
|
|
47
|
+
## Workflow
|
|
48
|
+
|
|
49
|
+
- Discover canonical glossary, ADR, domain docs and previous decisions first.
|
|
50
|
+
- Read the smallest relevant context; separate domain facts from observed implementation.
|
|
51
|
+
- For glossary candidates record term, definition, aliases, boundaries, source and conflicts.
|
|
52
|
+
- Distinguish genuinely new terms from synonyms and legacy names.
|
|
53
|
+
- For an ADR candidate record context, explicit decision, considered alternatives, consequences and evidence of approval.
|
|
54
|
+
- Avoid ADRs describing implementation details that were never a chosen policy.
|
|
55
|
+
- Present proposed targeted edits to the canonical locations before writing.
|
|
56
|
+
- Request approval for proposed glossary/ADR changes and respect repo/Git write protections.
|
|
57
|
+
- If approved, update the canonical glossary or append the next appropriate ADR without overwriting prior decisions.
|
|
58
|
+
- For superseded ADRs preserve history and add explicit supersession links rather than quietly rewriting accepted decisions.
|
|
59
|
+
- If no significant change exists, return a no-change report; do not generate documents.
|
|
60
|
+
- Link feature specs to relevant domain terms and ADRs rather than copying full contents into each spec.
|
|
61
|
+
|
|
62
|
+
## Decision points
|
|
63
|
+
|
|
64
|
+
- Read when relevant; propose on material domain change; write only after approval.
|
|
65
|
+
- Use existing GLOSSARY.md, docs/glossary.md or project convention; never create duplicates.
|
|
66
|
+
- An ADR requires a confirmed choice with actual trade-offs, not merely an inferred pattern.
|
|
67
|
+
- For minor terminology edits use glossary only; for technical policy trade-offs consider ADR.
|
|
68
|
+
|
|
69
|
+
## Stack detection
|
|
70
|
+
|
|
71
|
+
- Inspect manifests/configuration before assuming framework or tooling.
|
|
72
|
+
- For web and mobile check navigation, state lifecycle, API contracts and accessibility concerns.
|
|
73
|
+
- For backend check persistence, authentication, compatibility and operational boundaries.
|
|
74
|
+
- For other stacks use available repository evidence rather than generalized guesses.
|
|
75
|
+
|
|
76
|
+
## Failure modes
|
|
77
|
+
|
|
78
|
+
- Treating installed tooling as proof of user authorization.
|
|
79
|
+
- Reading one README and assuming it describes live behavior.
|
|
80
|
+
- Creating duplicate markdown for topics with an existing canonical document.
|
|
81
|
+
- Treating a proposed decision as accepted because it was presented to the user.
|
|
82
|
+
|
|
83
|
+
## Stop conditions
|
|
84
|
+
|
|
85
|
+
- Stop before persisting unconfirmed terminology or architectural choices.
|
|
86
|
+
- Stop when proposal is approved and verified or when no changes are warranted.
|
|
87
|
+
|
|
88
|
+
## Escalation conditions
|
|
89
|
+
|
|
90
|
+
- Ask for authorization when a write would change user-owned canonical content.
|
|
91
|
+
- Surface source conflicts affecting business correctness, money, security, privacy or data retention.
|
|
92
|
+
- Stop before irreversible operations not explicitly requested.
|
|
93
|
+
|
|
94
|
+
## Verification
|
|
95
|
+
|
|
96
|
+
- Check that documented file paths exist when referenced.
|
|
97
|
+
- Trace every concrete statement back to supplied material or observed repository evidence.
|
|
98
|
+
- Report what was proposed, approved, modified and left unresolved distinctly.
|
|
99
|
+
|
|
100
|
+
## Output contract
|
|
101
|
+
|
|
102
|
+
- Canonical paths and evidence-linked terminology or decision changes.
|
|
103
|
+
- Proposed diff with approval status, conflicts and deferred decisions.
|
|
104
|
+
- Verification and consumers affected by the accepted changes.
|
|
105
|
+
|
|
106
|
+
## Anti-patterns
|
|
107
|
+
|
|
108
|
+
- Duplicate a glossary simply to satisfy a process checklist.
|
|
109
|
+
- Use a hidden persistent state machine when portable text artifacts suffice.
|
|
110
|
+
- Generate empty ADRs or unsupported architecture stories.
|
|
111
|
+
- Begin implementation while approval is still outstanding.
|
|
112
|
+
|
|
113
|
+
## Example
|
|
114
|
+
|
|
115
|
+
- Define Package as the accepted insurance product unit and mark Plan as a legacy alias only with supporting evidence.
|
|
116
|
+
- Record an accepted persistence strategy as an ADR after the user agrees to real alternatives.
|
|
117
|
+
- Do not issue an ADR for switching a two-option field from dropdown to radio.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Architecture Decision Records
|
|
2
|
+
|
|
3
|
+
ADR proposal: context and forces, considered alternatives, chosen approach, consequences, owner/status, evidence and date where known.
|
|
4
|
+
|
|
5
|
+
Only record genuinely accepted high-impact architecture choices. If decision authority is not clear, keep status proposed and request acceptance.
|
|
6
|
+
|
|
7
|
+
When later superseded, preserve the original ADR and add explicit supersession references. Avoid rewriting historic outcomes to match current implementation.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Glossary discipline
|
|
2
|
+
|
|
3
|
+
Canonical discovery order: repository instructions, existing glossary links, domain docs, specs, then conventional paths. Respect the location already used by the project.
|
|
4
|
+
|
|
5
|
+
Each proposal states term, agreed definition, aliases/legacy names, scope, sources and affected consumers. Separate proposed language from user-approved language.
|
|
6
|
+
|
|
7
|
+
Do not create empty templates; do not rename all code solely because a vocabulary change was proposed. Show the precise diff and request approval.
|
|
@@ -45,6 +45,19 @@ Before any task-owned source/config/test/docs write, apply `showdar-git` branch
|
|
|
45
45
|
- Security may load as an orthogonal primitive (`showdar-security`) when the change touches auth, secrets, trust boundaries, or exposure.
|
|
46
46
|
- Stop when required evidence is missing instead of guessing.
|
|
47
47
|
|
|
48
|
+
## Conditional refinement gate (portable)
|
|
49
|
+
|
|
50
|
+
- Before selecting implementation stages, assess whether the requested feature has material unresolved product, permission, state, data, or architecture decisions.
|
|
51
|
+
- If the request is sufficiently defined, skip refinement with a concrete evidence reason; never force an interview for a local, low-risk or already approved change.
|
|
52
|
+
- If materially unclear and the optional `showdar-refine` companion is installed, invoke it before implementation; ask one high-impact question at a time and produce a Decision Brief.
|
|
53
|
+
- If the companion is missing, report it rather than claiming it ran; resolve blocking decisions with the user before continuing.
|
|
54
|
+
- When refinement has been triggered, wait for explicit user approval of the *whole* proposed spec revision before entering `showdar-build`.
|
|
55
|
+
- Carry approved decisions, non-goals, acceptance notes, unresolved questions and evidence into requirements/plan/design without repeating already answered questions.
|
|
56
|
+
- Use the existing canonical spec/ticket when present; persist a new `docs/specs/` document only for durable or complex handoff after approval.
|
|
57
|
+
- If later repository evidence contradicts an approved decision, reopen only the affected decision and obtain revision-specific approval.
|
|
58
|
+
- Refer to installed `showdar-domain-model` for meaningful shared terminology or accepted architectural decisions, not as a required lifecycle stage.
|
|
59
|
+
- This decision gate is portable guidance, not a new router, workflow-state stage, checkpoint authority, or implicit permission to mutate files.
|
|
60
|
+
|
|
48
61
|
## Workflow
|
|
49
62
|
|
|
50
63
|
### Phase 1 — determine needed stages
|
|
@@ -38,6 +38,11 @@ translations such as policy → “chính sách” or premium → “cao
|
|
|
38
38
|
cấp”. Do not equate application, quote, contract and
|
|
39
39
|
certificate.
|
|
40
40
|
|
|
41
|
+
## Project glossary integration
|
|
42
|
+
|
|
43
|
+
- Prefer the project's existing canonical insurance glossary for agreed wording and aliases; local references are background, not authority over project decisions.
|
|
44
|
+
- If shared terminology changes, propose updating the canonical glossary through `showdar-domain-model` when installed; never silently rewrite insurance product rules.
|
|
45
|
+
|
|
41
46
|
## Workflow
|
|
42
47
|
|
|
43
48
|
1. Identify the requested module and known market, insurer, product, product version and API version. Unknown scope stays explicit; ask only for missing context that changes the answer.
|
|
@@ -51,6 +51,14 @@ Before any task-owned source/config/test/docs write, apply `showdar-git` branch
|
|
|
51
51
|
- Do not invent requirements to make the architecture cleaner.
|
|
52
52
|
- Avoid placeholders such as “handle errors appropriately” without defining the required behavior.
|
|
53
53
|
|
|
54
|
+
## Refinement and domain decision contract
|
|
55
|
+
|
|
56
|
+
- Read an available approved Decision Brief, canonical glossary and accepted ADRs before selecting the approach.
|
|
57
|
+
- Treat approved alternatives and non-goals as constraints; avoid re-opening decisions merely to make the plan look cleaner.
|
|
58
|
+
- If a materially different choice is required, stop and reopen only affected decisions through `showdar-refine` if installed, or request the user decision directly.
|
|
59
|
+
- Use `showdar-domain-model` only to propose a meaningful new shared concept or approved high-impact architecture record.
|
|
60
|
+
- Approval of a design never grants write, Git, release, or production authority.
|
|
61
|
+
|
|
54
62
|
## Workflow
|
|
55
63
|
|
|
56
64
|
### Phase 1 — normalize the requirement
|
|
@@ -46,6 +46,12 @@ description: Use when planning QA/QC scenarios, risk coverage, regression scope,
|
|
|
46
46
|
- Preserve requirement terminology and trace each scenario to a requirement, risk, change surface, or observed defect.
|
|
47
47
|
- If a check belongs inside an automated test, state the boundary and hand implementation to `showdar-test`.
|
|
48
48
|
|
|
49
|
+
## Decision coverage
|
|
50
|
+
|
|
51
|
+
- Derive QA scenarios from existing approved spec and acceptance notes when present; do not invent missing product rules.
|
|
52
|
+
- If refinement was triggered and approval is missing, flag the readiness blocker instead of pretending the spec is agreed.
|
|
53
|
+
- Preserve canonical domain terminology when writing test scenarios; meaningful changes belong in an approved glossary proposal.
|
|
54
|
+
|
|
49
55
|
## Workflow
|
|
50
56
|
|
|
51
57
|
### Phase 1 — define the quality question
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: showdar-refine
|
|
3
|
+
description: Use when a feature idea or implementation request has unresolved product or architecture decisions that require interactive refinement and explicit spec approval.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Showdar Refine
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
- Offer a standalone portable Agent Skill that works without any Showdar executable.
|
|
11
|
+
- Reuse existing repository conventions and the user's authoritative requirements.
|
|
12
|
+
- Separate observations, assumptions, proposals, approvals, and mutations.
|
|
13
|
+
- Keep outcomes useful for the next engineering stage without creating a second router.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
- A proposed feature has conflicting behaviors, missing states or business-rule choices.
|
|
18
|
+
- Several viable architectural approaches differ in public contract, persistence or compatibility.
|
|
19
|
+
- The user explicitly asks to brainstorm, grill, refine or challenge a feature concept.
|
|
20
|
+
|
|
21
|
+
## When not to use
|
|
22
|
+
|
|
23
|
+
- The task already has approved scope, acceptance and design decisions.
|
|
24
|
+
- A localized bug has a proven root cause and agreed fix.
|
|
25
|
+
- The user asks only for testing, review or operational status.
|
|
26
|
+
|
|
27
|
+
## Inputs and assumptions
|
|
28
|
+
|
|
29
|
+
- Read repository instructions and user-provided context before proposing changes.
|
|
30
|
+
- Prefer relevant source files, API schemas, tests, tickets, and existing documentation.
|
|
31
|
+
- Record conflicting evidence and ask the user about decisions that change meaning.
|
|
32
|
+
- Treat an existing artifact as canonical when repository conventions say so.
|
|
33
|
+
|
|
34
|
+
## Non-negotiable rules
|
|
35
|
+
|
|
36
|
+
- Never claim a user approved an unapproved proposal.
|
|
37
|
+
- Do not infer permission to edit files, commit, push, merge, publish, or deploy.
|
|
38
|
+
- Before edits, honor repository Git policy and prepare a safe task branch as required.
|
|
39
|
+
- If the Showdar CLI is available, run showdar guard --mutation local-write --json and require ok=true and data.allowed=true.
|
|
40
|
+
- If CLI is unavailable, perform Git and repository-policy checks manually; never auto-fetch a CLI with npx.
|
|
41
|
+
- Respect existing files and user modifications; show proposed changes before writes.
|
|
42
|
+
- Do not fabricate product decisions or source evidence.
|
|
43
|
+
- Use native skill discovery in skills-only installations without assuming router, manifest or CLI.
|
|
44
|
+
|
|
45
|
+
Read `references/questioning.md` and `references/approval-handoff.md` only when that depth of detail is needed; these references are packaged inside this skill for skills-only installers.
|
|
46
|
+
|
|
47
|
+
## Workflow
|
|
48
|
+
|
|
49
|
+
- Start read-only: inspect request, canonical spec/ticket, relevant repository context and existing ADR/glossary.
|
|
50
|
+
- Classify readiness from evidence; skip refinement when outcomes and important decisions are already specified.
|
|
51
|
+
- If triggered, identify the single highest-impact unresolved decision rather than many decorative questions.
|
|
52
|
+
- Ask one targeted question at a time; when helpful give two or three feasible options with consequences.
|
|
53
|
+
- Challenge assumptions and negative paths, permissions, state, rollback, compatibility and data integrity.
|
|
54
|
+
- Do not ask the user to repeat a decision already clearly recorded.
|
|
55
|
+
- Draft a concise Decision Brief: goal, scope, non-goals, decisions with IDs, alternatives, acceptance notes and blockers.
|
|
56
|
+
- Show the complete proposed spec and request explicit approval; a response to one question is not approval for the whole brief.
|
|
57
|
+
- On changes, revise the brief and ask approval again; do not implement while waiting.
|
|
58
|
+
- After approval, prefer an existing canonical spec or ticket; save to docs/specs only for complex durable handoffs with file approval.
|
|
59
|
+
- For a small one-session task, keep the approved brief in conversation; never claim chat memory persists across sessions.
|
|
60
|
+
- Handoff the approved brief and exact decisions to showdar-requirements or showdar-plan without repeating the interview.
|
|
61
|
+
- If later evidence contradicts an accepted decision, reopen only affected decisions and request fresh approval.
|
|
62
|
+
|
|
63
|
+
## Decision points
|
|
64
|
+
|
|
65
|
+
- Trigger on material product/architecture ambiguity, not prompt length or number of modified files.
|
|
66
|
+
- Skip only with explicit evidence of defined behavior and no blocking decision.
|
|
67
|
+
- No architecture tradeoff? Do not invent alternatives merely to fill a matrix.
|
|
68
|
+
- Approved design does not grant Git, file mutation or deployment authority.
|
|
69
|
+
|
|
70
|
+
## Stack detection
|
|
71
|
+
|
|
72
|
+
- Inspect manifests/configuration before assuming framework or tooling.
|
|
73
|
+
- For web and mobile check navigation, state lifecycle, API contracts and accessibility concerns.
|
|
74
|
+
- For backend check persistence, authentication, compatibility and operational boundaries.
|
|
75
|
+
- For other stacks use available repository evidence rather than generalized guesses.
|
|
76
|
+
|
|
77
|
+
## Failure modes
|
|
78
|
+
|
|
79
|
+
- Treating installed tooling as proof of user authorization.
|
|
80
|
+
- Reading one README and assuming it describes live behavior.
|
|
81
|
+
- Creating duplicate markdown for topics with an existing canonical document.
|
|
82
|
+
- Treating a proposed decision as accepted because it was presented to the user.
|
|
83
|
+
|
|
84
|
+
## Stop conditions
|
|
85
|
+
|
|
86
|
+
- Do not enter implementation without full spec approval once refinement has run.
|
|
87
|
+
- Stop with needs-input when an unresolved decision materially changes implementation.
|
|
88
|
+
- Stop with ready-for-approval until explicit user acceptance.
|
|
89
|
+
- End as approved only after a clear confirmation of a specific brief or revision.
|
|
90
|
+
|
|
91
|
+
## Escalation conditions
|
|
92
|
+
|
|
93
|
+
- Ask for authorization when a write would change user-owned canonical content.
|
|
94
|
+
- Surface source conflicts affecting business correctness, money, security, privacy or data retention.
|
|
95
|
+
- Stop before irreversible operations not explicitly requested.
|
|
96
|
+
|
|
97
|
+
## Verification
|
|
98
|
+
|
|
99
|
+
- Check that documented file paths exist when referenced.
|
|
100
|
+
- Trace every concrete statement back to supplied material or observed repository evidence.
|
|
101
|
+
- Report what was proposed, approved, modified and left unresolved distinctly.
|
|
102
|
+
|
|
103
|
+
## Output contract
|
|
104
|
+
|
|
105
|
+
- Status: skipped | needs-input | ready-for-approval | approved.
|
|
106
|
+
- Approved brief with decision IDs, alternatives, assumptions, acceptance notes and unresolved questions.
|
|
107
|
+
- Next skill suggestion, evidence and persistence location if any; no invented approval authority.
|
|
108
|
+
|
|
109
|
+
## Anti-patterns
|
|
110
|
+
|
|
111
|
+
- Duplicate a glossary simply to satisfy a process checklist.
|
|
112
|
+
- Use a hidden persistent state machine when portable text artifacts suffice.
|
|
113
|
+
- Generate empty ADRs or unsupported architecture stories.
|
|
114
|
+
- Begin implementation while approval is still outstanding.
|
|
115
|
+
|
|
116
|
+
## Example
|
|
117
|
+
|
|
118
|
+
- For checkout vouchers, ask whether stacking is allowed before choosing a pricing algorithm.
|
|
119
|
+
- When the user accepts the complete voucher brief, hand off approved stacking and expiry rules.
|
|
120
|
+
- An already-specified one-line validation change should skip refinement entirely.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Approved Decision Brief and handoff
|
|
2
|
+
|
|
3
|
+
A brief contains Goal, Context evidence, Scope, Non-goals, Decisions (stable DEC identifiers), Alternatives and trade-offs, Assumptions, Acceptance notes, Open questions, Approval revision and Next skill.
|
|
4
|
+
|
|
5
|
+
States: skipped, needs-input, ready-for-approval, approved. Do not silently promote from needs-input or ready-for-approval.
|
|
6
|
+
|
|
7
|
+
When triggered, request explicit acceptance of the whole brief, not approval inferred from individual answers. Never begin implementation from a draft.
|
|
8
|
+
|
|
9
|
+
Adaptive persistence: update existing canonical spec/ticket only with approval, otherwise write docs/specs/<feature>.md when cross-session or complex handoff justifies it. In-session small approved briefs may remain in chat, but do not assume another session can recover the approval.
|
|
10
|
+
|
|
11
|
+
Do not store mutation permissions inside a workflow checkpoint. Require fresh repository authority for writes, commits or publication.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Questioning and skip policy
|
|
2
|
+
|
|
3
|
+
Read source evidence and previously accepted decisions first. Define a blocking decision as one whose alternatives materially affect product behavior, architecture, data integrity or compatibility.
|
|
4
|
+
|
|
5
|
+
Ask one high-leverage question per response, optionally with two or three real alternatives. Prefer specific examples and negative paths over generic surveys.
|
|
6
|
+
|
|
7
|
+
Skip if acceptance, behavior and significant decisions are already clear; do not force a feature into refinement for ceremony. When triggered, record explicit user acceptance of the entire resulting Decision Brief.
|
|
8
|
+
|
|
9
|
+
If source evidence later contradicts the approved brief, reopen only the affected decision and request a revision-specific approval.
|
|
@@ -56,6 +56,14 @@ Before any task-owned source/config/test/docs write, apply `showdar-git` branch
|
|
|
56
56
|
- Present unresolved items under an explicit `Open questions` heading when stakeholder input is required.
|
|
57
57
|
- Do not claim a requirement is ready merely because a happy path is described.
|
|
58
58
|
|
|
59
|
+
## Approved-spec and refinement handoff
|
|
60
|
+
|
|
61
|
+
- First inspect existing canonical spec/ticket and an approved Decision Brief when available; do not restart an interview for accepted decisions.
|
|
62
|
+
- If blocking product or architectural choices remain and `showdar-refine` is installed, use it as a companion before claiming the requirement implementation-ready.
|
|
63
|
+
- Once refinement was triggered, no implementation may begin until the user explicitly approves the complete spec.
|
|
64
|
+
- Capture newly agreed shared terms for an optional `showdar-domain-model` glossary proposal; do not silently edit docs or infer approvals.
|
|
65
|
+
- Preserve Decision Brief IDs and non-goals in acceptance criteria. Report missing approval or conflicting sources as blockers.
|
|
66
|
+
|
|
59
67
|
## Workflow
|
|
60
68
|
|
|
61
69
|
### Phase 1 — establish the source of truth
|