showdar-skills 0.10.0 → 0.12.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +120 -13
  3. package/bin/showdar.js +40 -3
  4. package/package.json +1 -1
  5. package/profiles/full.json +1 -1
  6. package/profiles/insurance.json +1 -0
  7. package/router/conflicts.yaml +8 -0
  8. package/router/skill-map.yaml +10 -1
  9. package/router/triggers.yaml +4 -0
  10. package/skills/showdar-git/SKILL.md +25 -1
  11. package/skills/showdar-insurance-domain/SKILL.md +132 -0
  12. package/skills/showdar-insurance-domain/references/concepts.md +23 -0
  13. package/skills/showdar-insurance-domain/references/glossary.md +70 -0
  14. package/skills/showdar-insurance-domain/references/source-protocol.md +42 -0
  15. package/skills/showdar-insurance-review/SKILL.md +129 -0
  16. package/skills/showdar-insurance-review/references/concepts.md +23 -0
  17. package/skills/showdar-insurance-review/references/glossary.md +70 -0
  18. package/skills/showdar-insurance-review/references/review-qa.md +29 -0
  19. package/skills/showdar-insurance-review/references/source-protocol.md +42 -0
  20. package/skills/showdar-insurance-workflows/SKILL.md +130 -0
  21. package/skills/showdar-insurance-workflows/references/concepts.md +23 -0
  22. package/skills/showdar-insurance-workflows/references/glossary.md +70 -0
  23. package/skills/showdar-insurance-workflows/references/lifecycle.md +29 -0
  24. package/skills/showdar-insurance-workflows/references/source-protocol.md +42 -0
  25. package/src/adapter-renderers.js +9 -1
  26. package/src/capabilities.js +3 -0
  27. package/src/catalog.js +4 -1
  28. package/src/git-start.js +87 -0
  29. package/src/project.js +26 -31
  30. package/src/runtime-route.js +99 -0
  31. package/src/validate.js +2 -2
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.12.0]
10
+
11
+ ### Added
12
+
13
+ - Canonical `showdar route --stdin|--prompt [--json]` runtime bridge projecting lifecycle primary, advisors, the seven public Intent keys, advisory domain matches, and installed/missing skill availability.
14
+ - Specialized domain discovery overlay using deterministic Unicode phrase matching over `router/skill-map.yaml` inline trigger arrays; insurance terminology, underwriting/rating flows, and insurer API/UI review map to `showdar-insurance-domain`, `showdar-insurance-workflows`, and `showdar-insurance-review` without granting authority.
15
+ - `showdar git-start --type --name [--base] [--dry-run] [--json]` for deterministic safe local task-branch preparation without inferred staging, commit, merge, or push.
16
+ - Task branch isolation guidance: branch-before-edit on integration/default branches, repository-policy priority, one branch per coherent task, and conservative dirty-worktree blocking.
17
+
18
+ ### Changed
19
+
20
+ - Managed harness instructions and commands invoke the canonical runtime router with native/static fallback when the CLI is unavailable.
21
+ - Init/add guidance reflects the complete installed set; add refreshes existing commands and instructions even when the skill is already installed.
22
+ - Showdar Git documents one branch per coherent task, repository-policy priority, and explicit completion/integration authority.
23
+ - Task completion defaults to verify and report; merge and push each require their own explicit authority.
24
+
25
+ ### Safety / Compatibility
26
+
27
+ - Domain discovery does not grant authority and never replaces the lifecycle primary or rewrites Intent/mutation.
28
+ - Phase 6G authority, state, evidence, trace, and manifest contracts unchanged; no engine vendoring into projects.
29
+ - No implicit branch commit/merge/push; no automatic stash, reset, restore, or clean.
30
+ - Existing v0.11 projects remain compatible; no migration required.
31
+
32
+ ## [0.11.0]
33
+
34
+ ### Added
35
+
36
+ - Add three independently installable insurance skills for insurer domain terminology, cross-line-of-business workflows, and terminology/API review, with Vietnamese–English–technical mappings and insurer/product-specific scoping.
37
+ - Add an insurance profile and route insurance-domain requests to the relevant skills without limiting the system to motor insurance or HDInsurance.
38
+
9
39
  ## [0.10.0]
10
40
 
11
41
  ### Added
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://img.shields.io/npm/v/showdar-skills?logo=npm)](https://www.npmjs.com/package/showdar-skills)
4
4
  [![Node >=20](https://img.shields.io/badge/node-%3E%3D20-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
5
5
  [![MIT License](https://img.shields.io/badge/license-MIT-blue?logo=opensourceinitiative&logoColor=white)](./LICENSE)
6
- [![19 skills](https://img.shields.io/badge/skills-19-6f42c1)](#skill-catalog)
6
+ [![22 skills](https://img.shields.io/badge/skills-22-6f42c1)](#skill-catalog)
7
7
 
8
8
  Production-grade software engineering skills for coding agents. Showdar covers
9
9
  the full lifecycle—from requirements and planning through implementation, QA,
@@ -40,9 +40,91 @@ Claude Code as supported installation targets. Choose `backend`, `qa`, or
40
40
  `product` when that gives discovery a more precise context; use `full` when
41
41
  you want all capabilities available.
42
42
 
43
+ ## Runtime routing and task branches
44
+
45
+ ```bash
46
+ printf '%s\n' 'Implement the approved underwriting form and add tests' | showdar route --stdin --json
47
+ showdar route --prompt "Explain insurance terminology"
48
+ showdar git-start --dry-run --type feature --name "IDP-123 Add pricing form"
49
+ showdar git-start --type feature --name "IDP-123 Add pricing form"
50
+ ```
51
+
52
+ Prefer `--stdin` for arbitrary or multiline prompts. Supply stdin as literal data;
53
+ never interpolate request text into a shell command. Both commands support `--json`
54
+ with a schemaVersion 1 envelope (`command`, `ok`, `data`, `warnings`, `errors`).
55
+
56
+ `route` is read-only. It consumes the existing Phase 6G authority resolver and thin
57
+ route, projecting exactly the seven public Intent keys plus lifecycle primary and
58
+ advisors. It never exposes internal capabilities, frames or authority diagnostics.
59
+ It neither authorizes work nor creates a branch. It preserves canonical advisor
60
+ semantics: a security-review phrase is not guaranteed to become a security advisor.
61
+
62
+ Domain discovery is a separate advisory overlay using the canonical
63
+ `router/skill-map.yaml` inline trigger arrays and grouped domain catalog metadata.
64
+ It uses deterministic Unicode phrase matching, not lifecycle scoring. Insurance
65
+ terminology can recommend `showdar-insurance-domain`, underwriting/rating business
66
+ flows `showdar-insurance-workflows`, and insurer API/UI terminology review
67
+ `showdar-insurance-review`. These skills do not replace lifecycle primaryCapability,
68
+ rewrite Intent/mutation, or grant authority. The existing ASCII/token ranking
69
+ helper is unsuitable for Vietnamese phrase discovery. No duplicate trigger table
70
+ or second authority engine is introduced.
71
+
72
+ When `.showdar.json` exists, availability checks managed native skill files and
73
+ recorded, still-present globally satisfied skills. Missing lifecycle primary,
74
+ advisors and domain matches are reported separately with `showdar add <name>`
75
+ suggestions; another installed skill never substitutes for the canonical route.
76
+ Without a project manifest, `managed` is false and installed/missing fields are
77
+ null (unknown), not fabricated. Invalid manifests fail explicitly. Explicit named
78
+ installed skills may load directly; this adds no mutation authority.
79
+
80
+ Managed project guidance invokes `showdar route --stdin --json` for automatic
81
+ selection, then loads the installed lifecycle skill, domain overlays and advisors.
82
+ The runtime bridge requires the `showdar` CLI in the harness environment. If it is
83
+ unavailable, native skill descriptions/static discovery are the fallback. No npm
84
+ install, npx fetch, package dependency mutation or remote download happens.
85
+ Projects receive only existing skills/commands/instructions/manifest; no wholesale
86
+ `src/`, `engine/` or `router/` copy. Init and add regenerate complete installed-set
87
+ guidance, including re-adding an existing skill. Global installs keep native discovery
88
+ and do not write project AGENTS.md or CLAUDE.md.
89
+
90
+ The four workflows remain native discoverable/installable skills; `route` does not
91
+ introduce workflow selection. Profiles remain primitive-only: `full` contains all
92
+ 18 primitives, and the insurance profile remains unchanged.
93
+
94
+ Before the first local-write task source edit on develop/development/dev/main/master
95
+ or the repository default/integration branch, prepare a task branch. Priority is
96
+ repository instructions/documented convention, explicit current user instruction,
97
+ clearly detected convention, then Showdar defaults. Explicit trunk/direct-work policy
98
+ wins. One coherent task uses one branch across plan/build/test/review. Completion
99
+ means verify and report; commit, merge and push need their own authority.
100
+
101
+ `git-start` prepares local branch state only. Types: feature (new capability), fix
102
+ (defect), refactor (internal structure), test, docs, chore (tooling/config), release,
103
+ hotfix (explicit urgent production repair). Slugs are lowercase, hyphenated, ticket
104
+ preserving and bounded; task text is passed as data and never executed.
105
+
106
+ Base resolution uses explicit `--base`, repository-local `showdar.gitBase`, established
107
+ local develop/development/dev, then local default/main/master. The helper does not
108
+ parse prose instructions or create develop. Read policy first and supply its base
109
+ when convention differs. Local Git config `showdar.gitBranchPrefix` supports custom
110
+ prefixes; `showdar.gitDirectWork=true` records an explicit direct-work convention.
111
+ Hotfix requires a convention via `--base` or `showdar.gitBase`.
112
+
113
+ Dry-run validates Git state/type/slug/base/collision and changes no refs. Execution
114
+ revalidates, then creates/switches only a task branch. Already on the matching branch
115
+ is a no-op; another task branch is blocked. An existing target is reused automatically
116
+ only when its tip equals both current HEAD and base; divergent/ambiguous targets stop
117
+ without overwriting history. Detached HEAD and active Git operations stop.
118
+
119
+ Dirty worktrees are blocked before any switch: the helper cannot prove ownership.
120
+ Confirmed current-task-only changes may use equivalent repository-specific branch
121
+ preparation after explicit ownership inspection. No automatic stash/reset/restore/clean,
122
+ staging, commit, merge or push occurs. Branch preparation itself does not authorize
123
+ source edits.
124
+
43
125
  ## Why Showdar?
44
126
 
45
- - **15 focused primitive skills** plus 4 adaptive workflow skills (19 installable) instead of one oversized agent prompt.
127
+ - **18 focused primitive skills** plus 4 adaptive workflow skills (22 installable), including an opt-in insurance domain profile.
46
128
  - **Lifecycle coverage** from product rules to implementation, verification,
47
129
  security, operations, release readiness, and Git completion.
48
130
  - **Intent-based discovery** that selects the workflow matching the request.
@@ -72,7 +154,7 @@ SKILL.md
72
154
  only when needed
73
155
  ```
74
156
 
75
- The 15 primitive skills are not eagerly loaded as full prompts. Lightweight
157
+ The 18 primitive skills are not eagerly loaded as full prompts. Lightweight
76
158
  descriptions help the agent choose one skill; that skill then loads its
77
159
  workflow and deeper knowledge progressively. Workflow skills add a portable
78
160
  orchestration layer: a workflow selects the lifecycle stages a task actually
@@ -95,7 +177,7 @@ agent/subagent, or MCP behavior across harnesses.
95
177
 
96
178
  ## Adapter model
97
179
 
98
- The portable core (15 primitives + 4 workflows) never changes per harness.
180
+ The portable core (18 primitives + 4 workflows) never changes per harness.
99
181
  A thin native adapter layer renders harness-specific entry surfaces only:
100
182
 
101
183
  ```text
@@ -135,8 +217,8 @@ the same canonical semantic body as the `AGENTS.md`/`CLAUDE.md` blocks.
135
217
  `/showdar/skill` is generated for OpenCode/Claude as generic
136
218
  installed-skill discovery. Commands are generated dynamically from the
137
219
  installed skill set: `minimal` yields 8 direct commands plus the generic
138
- entry; adding `feature` yields 9 plus generic. All 19 commands never exist
139
- unless all 19 skills are installed.
220
+ entry; adding `feature` yields 9 plus generic. All 22 commands never exist
221
+ unless all 22 skills are installed.
140
222
 
141
223
  ## Native install examples
142
224
 
@@ -226,7 +308,8 @@ skill, but still does not eagerly load every skill body.
226
308
  | `backend` | 14 | APIs, services, and runtime operations |
227
309
  | `qa` | 9 | Testing and quality workflows |
228
310
  | `product` | 6 | Product, requirements, and design work |
229
- | `full` | 15 | All primitive capabilities |
311
+ | `insurance` | 3 | Insurance terminology, business flows, and UI/API review |
312
+ | `full` | 18 | All primitive capabilities |
230
313
 
231
314
  Legacy aliases remain compatible:
232
315
 
@@ -239,7 +322,7 @@ New manifests store the canonical `developer` profile.
239
322
 
240
323
  ## Skill catalog
241
324
 
242
- All 15 primitive entries are first-class Showdar skills. Four workflow skills
325
+ All 18 primitive entries are first-class Showdar skills. Four workflow skills
243
326
  compose them; see [Workflow skills](#workflow-skills).
244
327
 
245
328
  ### Analysis and planning
@@ -274,6 +357,14 @@ compose them; see [Workflow skills](#workflow-skills).
274
357
  | `showdar-security` | Assessing threat models, attack surfaces, trust boundaries, auth/authz, secrets, exposure, or exploitability. |
275
358
  | `showdar-ops` | Inspecting or changing CI/CD, containers, environments, deployment, observability, rollback, or runtime operations. |
276
359
 
360
+ ### Insurance
361
+
362
+ | Skill | Use when |
363
+ | --- | --- |
364
+ | `showdar-insurance-domain` | Vietnamese insurer terminology, product taxonomy, coverage concepts, and VI/EN glossary. |
365
+ | `showdar-insurance-workflows` | Product configuration, underwriting, pricing, policy lifecycle, collection, or claims flows. |
366
+ | `showdar-insurance-review` | Reviewing insurer UI, domain/API mappings, validations, and QA scenarios. |
367
+
277
368
  ### Delivery and recovery
278
369
 
279
370
  | Skill | Use when |
@@ -547,11 +638,27 @@ showdar add feature
547
638
  showdar add bugfix --ai cursor
548
639
  showdar add release --scope global --ai claude
549
640
  showdar add incident
641
+ showdar add insurance-domain
642
+ showdar add insurance-workflows
643
+ showdar add insurance-review
644
+ showdar init --profile insurance
550
645
  ```
551
646
 
552
- Accepted names are the short form (`debug`, `feature`) or the canonical form
553
- (`showdar-debug`, `showdar-feature`). The release ships exactly 15 primitive
554
- skills plus 4 workflow skills (19 installable total); profiles install
647
+ After a Showdar Skills release containing these entries is published, upgrade the CLI
648
+ and add one insurance skill at a time from the insurer project:
649
+
650
+ ```bash
651
+ npm install -g showdar-skills@latest
652
+ showdar add insurance-domain --ai codex
653
+ ```
654
+
655
+ Use `showdar add insurance-workflows --ai codex` and
656
+ `showdar add insurance-review --ai codex` when those are needed. For a new project
657
+ that wants all three, `showdar init --profile insurance --ai codex` installs the set.
658
+
659
+ Accepted names are the short form (`debug`, `feature`, `insurance-domain`)
660
+ or the canonical form (`showdar-debug`, `showdar-feature`). The release ships exactly 18 primitive
661
+ skills plus 4 workflow skills (22 installable total); profiles install
555
662
  primitive sets only. There is no `showdar workflow ...` command. `showdar add`
556
663
  is idempotent, preserves the configured profile, supports `--ai`/`--scope`
557
664
  overrides, and refuses to overwrite a foreign same-name skill directory that
@@ -641,7 +748,7 @@ Project overrides live in the user-owned `.showdar/overrides.json` file:
641
748
  skill descriptions, discovery hints, advisory guidance text, custom
642
749
  workflow policy refinement, and new project-owned profiles. Showdar reads
643
750
  and validates the file but never rewrites or deletes it; built-in
644
- workflow semantics and the six built-in profiles cannot be overridden.
751
+ workflow semantics and the seven built-in profiles cannot be overridden.
645
752
  Pack-local profiles select pack-owned skills and workflows only.
646
753
 
647
754
  Showdar computes a full-tree SHA-256 over the validated pack source at
@@ -746,7 +853,7 @@ showdar remove [--scope <project|global>]
746
853
  Main flags are `--ai`, `--profile`, and `--scope`. `--ai` accepts `universal`,
747
854
  `codex`, `opencode`, `cursor`, `claude`, or `all` for `init` (single targets
748
855
  for `add`). `--scope` accepts `project` or `global` and defaults to `project`;
749
- `--profile` accepts the six canonical profiles and the deprecated
856
+ `--profile` accepts the seven canonical profiles and the deprecated
750
857
  `mobile`/`web` aliases. Run `showdar --help` or a command's `--help` for
751
858
  current options.
752
859
 
package/bin/showdar.js CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import path from 'node:path';
3
+ import { parseArgs } from 'node:util';
4
+ import { startTaskBranch, formatGitStart } from '../src/git-start.js';
5
+ import { routeRequest, formatRoute } from '../src/runtime-route.js';
3
6
  import { homedir } from 'node:os';
4
7
  import { readFile } from 'node:fs/promises';
5
8
  import { fileURLToPath } from 'node:url';
@@ -33,6 +36,14 @@ function scopeAfter(args) {
33
36
 
34
37
  function printHelp(version, command = null) {
35
38
  const scopeUsage = '[--scope <project|global>]';
39
+ if (command === 'route') {
40
+ console.log('Usage: showdar route (--stdin | --prompt <text>) [--json]');
41
+ return;
42
+ }
43
+ if (command === 'git-start') {
44
+ console.log('Usage: showdar git-start --type <type> --name <task> [--base <branch>] [--dry-run] [--json]');
45
+ return;
46
+ }
36
47
  if (command === 'init') {
37
48
  console.log(`Showdar Skills ${version}\n\nUsage:\n showdar init ${scopeUsage} [--profile <name>] [--ai <universal|codex|opencode|cursor|claude|all>]\n\nDefaults: scope project, profile full, AI target universal.\nProject scope writes native skills, one native instruction surface, and project .showdar.json. Global scope writes verified user skill directories and ~/.showdar/global.json without instruction files. Codex and universal use .agents/skills in project scope and ~/.agents/skills in global scope; cursor uses .cursor/skills in project scope and ~/.cursor/skills in global scope; --ai all writes each shared destination once, generates OpenCode and Claude commands, and writes only the AGENTS.md block.\n\nProfiles: ${Object.keys(PROFILES).join(', ')}\nDeprecated aliases: ${Object.entries(PROFILE_ALIASES).map(([alias, target]) => `${alias} -> ${target}`).join(', ')}\nAI targets: ${AI_TARGETS.join(', ')}`);
38
49
  return;
@@ -45,7 +56,7 @@ function printHelp(version, command = null) {
45
56
  console.log(`Showdar Skills ${version}\n\nUsage:\n showdar add <skill> [--ai <universal|codex|opencode|cursor|claude>] [--scope <project|global>]\n\nExamples:\n showdar add debug\n showdar add showdar-security\n showdar add test --ai cursor\n showdar add review --scope global --ai claude\n\nDefault scope: project. Default AI target: universal, or the configured .showdar.json value when present.`);
46
57
  return;
47
58
  }
48
- 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 <universal|codex|opencode|cursor|claude>] [--scope <project|global>]\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(', ')}`);
59
+ 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 <universal|codex|opencode|cursor|claude>] [--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 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(', ')}`);
49
60
  }
50
61
 
51
62
  async function main() {
@@ -59,10 +70,33 @@ async function main() {
59
70
  console.log(version);
60
71
  return;
61
72
  }
62
- if (args.includes('--help') || args.includes('-h')) return printHelp(version, command);
73
+ if (!['route', 'git-start'].includes(command) && (args.includes('--help') || args.includes('-h'))) return printHelp(version, command);
63
74
 
64
75
  const scope = ['init', 'status', 'doctor', 'remove', 'add'].includes(command) ? scopeAfter(args) : null;
65
76
 
77
+ if (command === 'git-start') {
78
+ const { values } = parseArgs({ args: args.slice(1), options: { type: { type: 'string' }, name: { type: 'string' }, base: { type: 'string' }, 'dry-run': { type: 'boolean' }, json: { type: 'boolean' }, help: { type: 'boolean', short: 'h' } } });
79
+ if (values.help) return printHelp(version, command);
80
+ const data = startTaskBranch({ cwd: projectRoot, type: values.type, name: values.name, base: values.base, dryRun: values['dry-run'] });
81
+ console.log(values.json ? JSON.stringify({ schemaVersion: 1, command, ok: true, data, warnings: [], errors: [] }, null, 2) : formatGitStart(data));
82
+ return;
83
+ }
84
+
85
+ if (command === 'route') {
86
+ const { values } = parseArgs({ args: args.slice(1), options: { stdin: { type: 'boolean' }, prompt: { type: 'string' }, json: { type: 'boolean' }, help: { type: 'boolean', short: 'h' } } });
87
+ if (values.help) return printHelp(version, command);
88
+ if (Boolean(values.stdin) === (values.prompt !== undefined)) throw new Error('Select exactly one of --stdin or --prompt.');
89
+ let prompt = values.prompt;
90
+ if (values.stdin) {
91
+ process.stdin.setEncoding('utf8');
92
+ prompt = '';
93
+ for await (const chunk of process.stdin) prompt += chunk;
94
+ }
95
+ const data = await routeRequest({ prompt, cwd: projectRoot, packageRoot });
96
+ console.log(values.json ? JSON.stringify({ schemaVersion: 1, command, ok: true, data, warnings: [], errors: [] }, null, 2) : formatRoute(data));
97
+ return;
98
+ }
99
+
66
100
  if (command === 'list') {
67
101
  if (args.includes('--extensions')) {
68
102
  const isJson = args.includes('--json');
@@ -342,6 +376,9 @@ async function main() {
342
376
  }
343
377
 
344
378
  main().catch((error) => {
345
- console.error(`showdar: ${error.message}`);
379
+ const command = process.argv[2];
380
+ if (['route', 'git-start'].includes(command) && process.argv.slice(3).includes('--json')) {
381
+ console.log(JSON.stringify({ schemaVersion: 1, command, ok: false, data: null, warnings: [], errors: [{ code: 'INVALID_REQUEST', message: error.message }] }, null, 2));
382
+ } else console.error(`showdar: ${error.message}`);
346
383
  process.exitCode = 1;
347
384
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "showdar-skills",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Production-grade software engineering lifecycle skills for coding agents.",
5
5
  "type": "module",
6
6
  "bin": { "showdar": "./bin/showdar.js" },
@@ -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"]}
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"]}
@@ -0,0 +1 @@
1
+ {"skills":["showdar-insurance-domain","showdar-insurance-workflows","showdar-insurance-review"]}
@@ -48,3 +48,11 @@ overlap_matrix:
48
48
  boundary: quality plans scenario coverage and confidence; ship decides whether release or handoff evidence is sufficient
49
49
  - pair: showdar-upgrade vs showdar-build
50
50
  boundary: upgrade changes dependency or platform compatibility; build changes application behavior within the supported stack
51
+ - pair: showdar-insurance-domain vs showdar-insurance-workflows
52
+ boundary: insurance-domain resolves terminology and concept mappings; insurance-workflows analyzes scoped business transitions and rules
53
+ - pair: showdar-insurance-workflows vs showdar-insurance-review
54
+ boundary: insurance-workflows derives sourced flows and rules; insurance-review checks concrete UI, model, API, and QA mappings against that evidence
55
+ - pair: showdar-insurance-workflows vs showdar-requirements
56
+ boundary: insurance-workflows applies insurance concepts to a scoped flow; showdar-requirements owns cross-domain requirement readiness and unresolved stakeholder decisions
57
+ - pair: showdar-insurance-review vs showdar-review
58
+ boundary: insurance-review checks business terminology and data mappings; showdar-review checks implementation correctness and maintainability
@@ -38,7 +38,7 @@ routes:
38
38
  triggers: ["resume interrupted implementation", "recover partial work", "session stopped", "continue partial work", "missing context"]
39
39
  skill: showdar-recover
40
40
  git:
41
- triggers: ["commit", "stage only task files", "merge branch", "rebase branch", "cherry-pick commit", "git conflict", "push branch", "clean merged branches", "finish git workflow"]
41
+ triggers: ["commit", "stage only task files", "merge branch", "rebase branch", "cherry-pick commit", "git conflict", "push branch", "clean merged branches", "finish git workflow", "start task branch", "create feature branch", "create fix branch", "branch for this task"]
42
42
  skill: showdar-git
43
43
  requirements:
44
44
  triggers: ["requirements", "business rules", "acceptance criteria", "user stories", "use cases", "requirement matrix", "missing requirement", "ambiguity"]
@@ -52,3 +52,12 @@ routes:
52
52
  ops:
53
53
  triggers: ["CI/CD", "GitHub Actions", "Docker", "container", "deployment", "deploy", "observability", "rollback", "runtime operations", "staging"]
54
54
  skill: showdar-ops
55
+ insurance-domain:
56
+ triggers: ["insurance terminology", "insurance glossary", "bảo hiểm", "thuật ngữ bảo hiểm", "taxonomy bảo hiểm", "line of business", "coverage term", "sum insured meaning"]
57
+ skill: showdar-insurance-domain
58
+ insurance-workflows:
59
+ triggers: ["insurance business flow", "underwriting", "insurance pricing", "premium rating", "policy issuance", "insurance claim flow", "endorsement flow", "renewal flow", "bồi thường", "thẩm định bảo hiểm", "flow thu phí"]
60
+ skill: showdar-insurance-workflows
61
+ insurance-review:
62
+ triggers: ["insurer API mapping", "insurance UI terminology", "review insurance schema", "insurance QA scenarios", "sub-limit mapping", "coverage validation", "mapping UI API bảo hiểm"]
63
+ skill: showdar-insurance-review
@@ -25,6 +25,10 @@ rules:
25
25
  - local Git commit, staging, branch, merge, rebase, conflict, cleanup, and explicit push intent routes to showdar-git
26
26
  - explicit rebase, cherry-pick, merge, or Git conflict operations route to showdar-git; interrupted implementation recovery routes to showdar-recover
27
27
  - product or business input, missing requirements, business rules, user stories, use cases, acceptance criteria, and requirement readiness route to showdar-requirements
28
+ - glossary, taxonomy, aliases, and VI/EN insurance concepts route to showdar-insurance-domain
29
+ - product configuration, underwriting, rating, quote, issuance, collection, endorsement, renewal, cancellation, and claims flows route to showdar-insurance-workflows
30
+ - concrete insurer UI/domain/API mapping, terminology review, and insurance QA cases route to showdar-insurance-review
31
+ - generic requirements and QA requests retain their existing routes unless insurance-specific evidence mapping is the task
28
32
  - QA scenarios, risk-based coverage, regression scope, compatibility matrices, exploratory checks, and bug-report quality route to showdar-quality
29
33
  - explicit security, authz, secrets, exposure, attack-surface, threat, or exploitability intent routes to showdar-security before general review
30
34
  - operational CI/CD, container, environment, deployment, observability, rollback, or runtime intent routes to showdar-ops; release readiness remains showdar-ship and Git-only work remains showdar-git
@@ -46,6 +46,29 @@ This skill owns repository state transitions, not source-code review or GitHub a
46
46
  - Push, tag, remote deletion, pull with mutation, GitHub operations, and release actions require explicit intent.
47
47
  - Report exactly what changed after each Git mutation.
48
48
 
49
+ ## Task branch isolation
50
+
51
+ Before the first task-owned source edit for a local-write engineering task, inspect Git state (`git status --short`, current branch, branch history and repository policy). Direct develop/main edits are not the default: on develop, development, dev, main, master or the default/integration branch, prepare a dedicated task branch before source mutation.
52
+
53
+ Priority: repository instructions/documented branching convention; explicit current user instruction; clearly detected existing convention; Showdar safe default. Explicit trunk-based/direct-work policy wins: do not impose GitFlow. Branch preparation does not authorize source mutation.
54
+
55
+ Use one branch per coherent task across understand, requirements, plan, design, build, test and review. Continue the current task branch; never create a branch per skill or nested branches.
56
+
57
+ Default types: new user-visible capability → `feature`; observed defect → `fix`; internal restructuring → `refactor`; tests only → `test`; documentation only → `docs`; tooling/config/maintenance → `chore`; release preparation → `release`; explicit urgent production repair → `hotfix`. Names use a bounded lowercase hyphen slug preserving ticket keys.
58
+
59
+ Prefer established local develop for normal work; otherwise the repository default/integration branch. Do not create develop automatically. Explicit hotfix follows repository convention. Read prose policy yourself; the helper does not parse repository instructions. Supply `--base` or repository-local Git config `showdar.gitBase`, `showdar.gitBranchPrefix`, `showdar.gitDirectWork` for deterministic custom conventions.
60
+
61
+ ```bash
62
+ showdar git-start --dry-run --type feature --name "Task description"
63
+ showdar git-start --type feature --name "Task description"
64
+ ```
65
+
66
+ The helper revalidates before creating/switching and never edits source. A clean worktree can branch. Confirmed current-task changes may be carried only through equivalent repository-specific Git preparation with proven ownership and Git permission; the helper conservatively blocks dirty changes before switching because it cannot prove ownership. Unrelated/ambiguous changes → STOP. No hidden stash, reset, restore or clean.
67
+
68
+ Existing same-name branches must be inspected. The helper reuses only an unused branch with the same tip as both current HEAD and base; an already-active matching branch is a continue/no-op. Any other collision → STOP; never reset or overwrite branch history. Already on another task branch → inspect task identity before switching.
69
+
70
+ Default completion: task branch → verify → report. No inferred commit, merge or push. Merge only when explicitly requested or clearly included in current repository/user task authority; push remains independently explicit.
71
+
49
72
  ## Workflow
50
73
 
51
74
  ### 1. Inspect Git state
@@ -273,7 +296,8 @@ report -> SHA, staged paths, exclusions, and clean/dirty final state
273
296
  ### Feature completion without push
274
297
 
275
298
  ```text
276
- feature branch -> selective commit -> switch develop -> merge using repository convention -> verify
299
+ task branch -> verify -> report
300
+ selective commit only when requested; merge only with current task authority
277
301
  remote -> not touched because no push request was given
278
302
  ```
279
303
 
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: showdar-insurance-domain
3
+ description: Use when Vietnamese insurer work involves insurance terminology, product taxonomy, coverage concepts, VI/EN glossary, or insurer/product-specific vocabulary.
4
+ ---
5
+
6
+
7
+ # Insurance domain
8
+
9
+ ## Purpose
10
+
11
+ Reason in insurance business language and preserve exact
12
+ mappings to implementation identifiers. This is a multi-line
13
+ insurer domain: motor, health, accident, travel, property,
14
+ cargo, engineering, liability, personal insurance and other
15
+ supported products. HDInsurance/HDI or motor examples never
16
+ establish the whole system's scope. Do not assume modules
17
+ already exist.
18
+
19
+ ## Sources and scope
20
+
21
+ Read [source protocol](references/source-protocol.md) for every
22
+ domain task. Read [glossary](references/glossary.md) for
23
+ terminology and [concepts](references/concepts.md) for
24
+ relationships/taxonomy. Load only relevant sections.
25
+
26
+ For each term, keep five layers separate: industry meaning,
27
+ insurer alias, product/version meaning, UI label, exact
28
+ technical/API identifier. A likely translation is a candidate,
29
+ not an approved insurer term. `planCode` alone does not
30
+ establish whether its meaning is a gói, chương trình, phương án
31
+ or technical grouping.
32
+
33
+ Keep VI accents; prefer language used by insurer operations.
34
+ Preserve an insurer's approved wording within its scope and
35
+ record aliases instead of overwriting a shared term. Do not
36
+ translate JSON keys, enums or identifiers. Avoid literal
37
+ translations such as policy → “chính sách” or premium → “cao
38
+ cấp”. Do not equate application, quote, contract and
39
+ certificate.
40
+
41
+ ## Workflow
42
+
43
+ 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.
44
+ 2. Extract exact terms and source locations from supplied glossary, wording, BA/spec, SOP, API/schema, screenshots and sample data.
45
+ 3. Match by meaning, not spelling. Explain distinctions and relationships before suggesting labels or mappings. Label observed code behavior separately from business requirements.
46
+ 4. Record conflicts and ask for verification of the affected interpretation. Continue independent analysis; do not choose the newer document, more convenient term or API name as business authority.
47
+
48
+ ## Term resolution
49
+
50
+ - Use the legal Vietnamese term for statutory roles and concepts when the applicable
51
+ legal source defines it. Label its EN rendering as a working
52
+ translation unless a bilingual authority confirms the English
53
+ term.
54
+ - Use wording, schedule and endorsements to interpret product coverage and exclusions.
55
+ Keep the exact product/version and effective scope with each
56
+ term.
57
+ - Use the insurer glossary and SOP for approved operator vocabulary. Preserve a
58
+ differing local alias alongside the normalized domain concept.
59
+ - Use API contracts for wire spelling, enum values, types and null behavior. Do not
60
+ silently promote technical names to product names or visible UI
61
+ labels.
62
+ - Use observed screens and implementation to report what exists. Keep observations
63
+ distinct from approved or requested behavior.
64
+ - When one displayed label maps to several API values, or an API value has several
65
+ product-specific meanings, show the conditional mapping instead
66
+ of flattening it.
67
+ - When sources conflict, preserve both meanings, source versions and the affected
68
+ decision. Ask which source governs that scope.
69
+
70
+ ## Output contract
71
+
72
+ Produce only the requested scope. A glossary/mapping uses:
73
+
74
+ | VI term | EN term | Meaning/distinction | Insurer/product alias | UI label | API path/type/enum | Scope | Source/location | Evidence status |
75
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
76
+
77
+ Use `unknown` for missing API mappings and `candidate` for
78
+ unapproved labels. Add relationships and unresolved conflicts
79
+ when relevant. Do not generate invented identifiers to fill the
80
+ table.
81
+
82
+ ## Example
83
+
84
+ Example: a sample `planCode: "A"` proves only that the sample
85
+ contains that field/value. Report its business meaning and UI
86
+ label as unresolved until a glossary, contract or BA definition
87
+ establishes them.
88
+
89
+ ## When to use
90
+ Analyze insurer terminology, taxonomy, business concepts or
91
+ glossary mappings across any supported line of business.
92
+ ## When not to use
93
+ For state transitions or rule derivation use
94
+ `showdar-insurance-workflows`; for implementation/UI QA use
95
+ `showdar-insurance-review`.
96
+ ## Inputs and assumptions
97
+ Use supplied glossary, BA/spec, wording, SOP, API/schema and
98
+ scoped samples. No insurer-specific source is bundled.
99
+ ## Non-negotiable rules
100
+ Keep source, scope and evidence status attached to each mapping.
101
+ A seed translation is not an approved UI label.
102
+ ## Decision points
103
+ Exact approved mapping available: preserve it. Meaning
104
+ uncertain: keep mapping unknown. Conflicting definitions: report
105
+ both.
106
+ ## Stack detection
107
+ Identify actual models and API versions only when mapping to
108
+ implementation. Framework choice cannot define insurance
109
+ meaning.
110
+ ## Failure modes
111
+ Same word can refer to different concepts across products.
112
+ Apparent synonyms can hide different monetary or legal effects.
113
+ ## Stop conditions
114
+ Do not finalize a mapping that would change money, coverage,
115
+ party role or contractual meaning without evidence.
116
+ ## Escalation conditions
117
+ Ask for the applicable glossary or business-owner verification
118
+ when context cannot distinguish competing meanings.
119
+ ## Verification
120
+ Check that each mapping distinguishes legal taxonomy from
121
+ catalog grouping. Check that health, personal insurance and
122
+ non-life are not collapsed by analogy. Verify an alias is
123
+ recorded with its insurer and applicable product/version. Keep
124
+ source-backed wording separate from proposed operator-facing
125
+ wording. Check every asserted API identifier against the
126
+ contract; every insurer alias against its scoped source. Check
127
+ translations preserve the distinctions in the relevant concepts
128
+ reference.
129
+ ## Anti-patterns
130
+ Guessing a gói from planCode, rewriting API enums into
131
+ Vietnamese, or treating an insurer sample as an industry
132
+ standard.
@@ -0,0 +1,23 @@
1
+ # Relationships and taxonomy
2
+
3
+ This is a conceptual checklist, not a prescribed database schema or cardinality.
4
+
5
+ ## Product structure
6
+
7
+ Keep statutory insurance type, insurer LOB/sub-LOB, product, product version, plan/package, coverage/benefit and risk object separate. An insurer catalog may group health, accident or travel differently from legal categories. “Con người” is a broad business grouping, not proof of a single statutory type. Motor, health, accident, travel, property, cargo, engineering and liability are examples, not a closed enum or mandated hierarchy.
8
+
9
+ Resolve membership, cardinality and identifiers from supplied taxonomy. One product can combine risks/benefits; a plan can select or configure coverage; each relation is a hypothesis until established by product/schema sources. Product publication does not establish that a particular risk is eligible.
10
+
11
+ ## Contract structure
12
+
13
+ Distinguish buyer, insured, beneficiary, payer, intermediary and insurer. They can coincide in particular cases but must not be merged by default. Identify insured objects, coverage selections, limits, exclusions, deductible mechanisms, effective period, territory and conditions. Keep quote, application/proposal, underwriting decision, contract, issued documents and payments conceptually separate even if the implementation combines them.
14
+
15
+ ## Money and risk
16
+
17
+ Eligibility answers whether participation criteria are met; underwriting assesses acceptance and terms. Sum insured, insured value, liability/benefit limit and sub-limit are different concepts. A monetary limit needs currency, unit, insured subject, coverage, event/claim/period basis and aggregation/reset rules where applicable. Deductible may have fixed/percentage/minimum and per-event bases; do not invent their combination. Benefit products need not use an actual-loss indemnity calculation.
18
+
19
+ ## Version and status
20
+
21
+ Separate product availability/publication, rate-table validity, quote status, application status, underwriting status, policy lifecycle, payment status, document generation and claim status. Preserve actual enum mappings. Never equate `ISSUED` with paid, in force or document delivered without source.
22
+
23
+ Use product/rate/wording/API versions and applicable dates when tracing historical contracts. Determine whether a transaction snapshots terms or resolves them dynamically; neither is prescribed here. Renewal and endorsement may select different versions only under documented rules. Concurrent configuration changes require an explicit interpretation and test oracle.