@dzhechkov/skills-feature-adr 1.0.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 (28) hide show
  1. package/README.md +195 -0
  2. package/bin/cli.js +5 -0
  3. package/package.json +53 -0
  4. package/src/cli.js +151 -0
  5. package/src/commands/doctor.js +355 -0
  6. package/src/commands/init.js +166 -0
  7. package/src/commands/list.js +146 -0
  8. package/src/commands/remove.js +182 -0
  9. package/src/commands/update.js +167 -0
  10. package/src/utils.js +334 -0
  11. package/templates/.claude/commands/feature-adr.md +92 -0
  12. package/templates/.claude/rules/feature-adr-conventions.md +82 -0
  13. package/templates/.claude/shards/feature-adr.shard.md +98 -0
  14. package/templates/.claude/skills/feature-adr/SKILL.md +252 -0
  15. package/templates/.claude/skills/feature-adr/examples/sample-feature-output.md +257 -0
  16. package/templates/.claude/skills/feature-adr/modules/00-complexity-router.md +114 -0
  17. package/templates/.claude/skills/feature-adr/modules/01-requirements.md +113 -0
  18. package/templates/.claude/skills/feature-adr/modules/02-research.md +92 -0
  19. package/templates/.claude/skills/feature-adr/modules/03-adr.md +135 -0
  20. package/templates/.claude/skills/feature-adr/modules/04-ddd.md +114 -0
  21. package/templates/.claude/skills/feature-adr/modules/05-architecture.md +149 -0
  22. package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +129 -0
  23. package/templates/.claude/skills/feature-adr/modules/07-code.md +126 -0
  24. package/templates/.claude/skills/feature-adr/modules/08-qe.md +167 -0
  25. package/templates/.claude/skills/feature-adr/references/adr-template.md +102 -0
  26. package/templates/.claude/skills/feature-adr/references/c4-template.md +120 -0
  27. package/templates/.claude/skills/feature-adr/references/complexity-matrix.md +139 -0
  28. package/templates/.claude/skills/feature-adr/references/qe-checklist.md +86 -0
package/README.md ADDED
@@ -0,0 +1,195 @@
1
+ # @dzhechkov/skills-feature-adr
2
+
3
+ **Adaptive Feature Development skill pack for Claude Code**
4
+
5
+ 9-step pipeline with Complexity Router (S/M/L/XL) for developing features of any scale — from a 3-file config change to a cross-cutting 30+ file refactoring. Part of the [Keysarium](https://www.npmjs.com/package/@dzhechkov/keysarium) ecosystem.
6
+
7
+ ---
8
+
9
+ ## Quick Start
10
+
11
+ ```bash
12
+ # One-command install via npx
13
+ npx @dzhechkov/skills-feature-adr
14
+
15
+ # Or install globally
16
+ npm install -g @dzhechkov/skills-feature-adr
17
+ skills-feature-adr init
18
+
19
+ # Install into a project that already has @dzhechkov/keysarium
20
+ npx @dzhechkov/skills-feature-adr init
21
+ ```
22
+
23
+ After installation, open Claude Code in your project directory and use `/feature-adr`.
24
+
25
+ ---
26
+
27
+ ## What You Get
28
+
29
+ | Component | Count | Description |
30
+ |-----------|-------|-------------|
31
+ | **Skill** | 1 | `feature-adr` — 9-step pipeline with complexity routing |
32
+ | **Modules** | 9 | Steps 00-08: Complexity Router → Requirements → Research → ADR → DDD → Architecture → Plan → Code → QE |
33
+ | **References** | 4 | Complexity matrix, ADR template, C4 template, QE checklist |
34
+ | **Examples** | 1 | Sample M-tier feature output |
35
+ | **Command** | 1 | `/feature-adr` — orchestrator command |
36
+ | **Rules** | 1 | `feature-adr-conventions` — directory structure and naming |
37
+ | **Shards** | 1 | `feature-adr` — governance shard with quality gates |
38
+
39
+ Everything is installed into your project's `.claude/` directory and works natively with Claude Code.
40
+
41
+ ---
42
+
43
+ ## Commands
44
+
45
+ ```bash
46
+ npx @dzhechkov/skills-feature-adr # Full install (same as init)
47
+ npx @dzhechkov/skills-feature-adr init # Install all components
48
+ npx @dzhechkov/skills-feature-adr init --force # Overwrite existing files
49
+ npx @dzhechkov/skills-feature-adr init --dry-run # Preview without making changes
50
+ npx @dzhechkov/skills-feature-adr update # Update to latest version
51
+ npx @dzhechkov/skills-feature-adr remove # Clean uninstall
52
+ npx @dzhechkov/skills-feature-adr list # Show installed components
53
+ npx @dzhechkov/skills-feature-adr doctor # Health check
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Feature ADR Pipeline
59
+
60
+ ```
61
+ Step 0 Step 1 Step 2 Step 3 Step 4
62
+ COMPLEXITY → REQUIREMENTS → RESEARCH → ADR → DDD
63
+ ROUTER (L/XL only) (M+ only) (L/XL only)
64
+
65
+ Step 5 Step 6 Step 7 Step 8
66
+ ARCHITECTURE → IMPLEMENTATION → CODE → QE
67
+ (M+ only) PLAN
68
+ ```
69
+
70
+ ### Usage in Claude Code
71
+
72
+ ```bash
73
+ # Start the full adaptive pipeline
74
+ /feature-adr Add user authentication with OAuth2 and JWT
75
+
76
+ # The Complexity Router classifies your feature automatically:
77
+ # S → fast track (5 steps)
78
+ # M → standard (7 steps)
79
+ # L → full pipeline (9 steps)
80
+ # XL → full DAG + multi-agent swarm
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Complexity Tiers
86
+
87
+ | Tier | Scope | Active Steps | Time Budget |
88
+ |------|-------|-------------|-------------|
89
+ | **S** | 1-3 files, 1 domain | 0→1→6→7→8 | ~15 min |
90
+ | **M** | 4-10 files, 1-2 domains | 0→1→3→5→6→7→8 | ~45 min |
91
+ | **L** | 11-30 files, 2-4 domains | Full pipeline with parallelism | ~2 hours |
92
+ | **XL** | 30+ files, cross-cutting | Full DAG + multi-agent swarm | ~4+ hours |
93
+
94
+ ### Complexity Dimensions (scored 1-4 each)
95
+
96
+ | Dimension | 1 (Low) | 4 (High) |
97
+ |-----------|---------|----------|
98
+ | Files affected | 1-3 | 30+ |
99
+ | Domain breadth | Single module | Cross-cutting concerns |
100
+ | Integration points | 0-1 external | 4+ external systems |
101
+ | Risk / reversibility | Easily reverted | Data migration required |
102
+ | Novelty | Well-known pattern | No prior art in codebase |
103
+ | Stakeholder count | Solo developer | 4+ teams affected |
104
+
105
+ ---
106
+
107
+ ## Pipeline Steps
108
+
109
+ | Step | Name | Tiers | Model | Output |
110
+ |------|------|-------|-------|--------|
111
+ | 0 | Complexity Router | All | haiku | `00_complexity_assessment.md` |
112
+ | 1 | Requirements | All | sonnet | `01_requirements.md` |
113
+ | 2 | Research | L/XL | sonnet | `02_research.md` |
114
+ | 3 | ADR | M+ | opus | `03_adr/001-*.md` |
115
+ | 4 | DDD | L/XL | opus | `04_domain_model.md` |
116
+ | 5 | Architecture | M+ | opus | `05_architecture.md` + diagrams |
117
+ | 6 | Implementation Plan | All | sonnet | `06_implementation_plan.md` |
118
+ | 7 | Code | All | opus | `07_code_changes/` |
119
+ | 8 | QE | All | sonnet | `08_qe_report.md` |
120
+
121
+ ---
122
+
123
+ ## Output Structure
124
+
125
+ ```
126
+ features/<feature-slug>/
127
+ ├── 00_complexity_assessment.md ← Always
128
+ ├── 01_requirements.md ← Always
129
+ ├── 02_research.md ← L/XL only
130
+ ├── 03_adr/
131
+ │ └── 001-<decision-slug>.md ← M+ only
132
+ ├── 04_domain_model.md ← L/XL only
133
+ ├── 05_architecture.md ← M+ only
134
+ ├── 06_implementation_plan.md ← Always
135
+ ├── 07_code_changes/
136
+ │ └── change_manifest.md ← Always
137
+ ├── 08_qe_report.md ← Always
138
+ ├── diagrams/ ← M+ only
139
+ │ ├── architecture-c4.mermaid
140
+ │ └── sequence-*.mermaid
141
+ └── README.md ← Always
142
+ ```
143
+
144
+ ---
145
+
146
+ ## Shared Skills
147
+
148
+ Feature ADR uses these skills from `@dzhechkov/keysarium` (if installed):
149
+
150
+ | Skill | Used In | Purpose |
151
+ |-------|---------|---------|
152
+ | `explore` | Step 1 | Requirements clarification |
153
+ | `problem-solver-enhanced` | Step 3 | Trade-off analysis for ADR |
154
+ | `frontend-design` | Step 7 | UI implementation (if applicable) |
155
+
156
+ These are optional — Feature ADR works standalone but benefits from the full toolkit.
157
+
158
+ ---
159
+
160
+ ## Integration with Keysarium Ecosystem
161
+
162
+ ```bash
163
+ # Install the full ecosystem
164
+ npx @dzhechkov/keysarium init # Research pipeline
165
+ npx @dzhechkov/skills-bto init # Build-Test-Optimize
166
+ npx @dzhechkov/skills-feature-adr init # Feature development
167
+
168
+ # Use the right tool for the job:
169
+ /casarium [case description] # AI case research (7 phases)
170
+ /feature-adr [feature description] # Feature development (9 steps)
171
+ /bto [skill path] # Skill evaluation & optimization
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Requirements
177
+
178
+ - **Claude Code CLI** — installed and configured ([installation guide](https://docs.anthropic.com/en/docs/claude-code))
179
+ - **Node.js >= 16.0.0** — required for the npm install method
180
+
181
+ ---
182
+
183
+ ## License
184
+
185
+ [MIT](https://opensource.org/licenses/MIT)
186
+
187
+ ---
188
+
189
+ ## Links
190
+
191
+ - **GitHub:** [https://github.com/dzhechko/product-keysarium-2026](https://github.com/dzhechko/product-keysarium-2026)
192
+ - **Issues:** [https://github.com/dzhechko/product-keysarium-2026/issues](https://github.com/dzhechko/product-keysarium-2026/issues)
193
+ - **npm:** [https://www.npmjs.com/package/@dzhechkov/skills-feature-adr](https://www.npmjs.com/package/@dzhechkov/skills-feature-adr)
194
+ - **Keysarium:** [https://www.npmjs.com/package/@dzhechkov/keysarium](https://www.npmjs.com/package/@dzhechkov/keysarium)
195
+ - **BTO:** [https://www.npmjs.com/package/@dzhechkov/skills-bto](https://www.npmjs.com/package/@dzhechkov/skills-bto)
package/bin/cli.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ 'use strict';
4
+
5
+ require('../src/cli.js');
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@dzhechkov/skills-feature-adr",
3
+ "version": "1.0.0",
4
+ "description": "Adaptive Feature Development skill pack for Claude Code — 9-step pipeline with Complexity Router (S/M/L/XL), ADR-driven architecture, and multi-agent QE",
5
+ "main": "src/cli.js",
6
+ "bin": {
7
+ "skills-feature-adr": "./bin/cli.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "src/",
12
+ "templates/"
13
+ ],
14
+ "scripts": {
15
+ "test": "node bin/cli.js doctor",
16
+ "prepublishOnly": "node scripts/sync-templates.js"
17
+ },
18
+ "keywords": [
19
+ "claude",
20
+ "claude-code",
21
+ "ai",
22
+ "feature-adr",
23
+ "adr",
24
+ "architecture-decision-records",
25
+ "feature-development",
26
+ "complexity-router",
27
+ "skills",
28
+ "skill-pack",
29
+ "ddd",
30
+ "quality-engineering"
31
+ ],
32
+ "author": "dzhechko",
33
+ "license": "MIT",
34
+ "engines": {
35
+ "node": ">=16.0.0"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/dzhechko/product-keysarium-2026"
40
+ },
41
+ "homepage": "https://github.com/dzhechko/product-keysarium-2026#readme",
42
+ "bugs": {
43
+ "url": "https://github.com/dzhechko/product-keysarium-2026/issues"
44
+ },
45
+ "peerDependencies": {
46
+ "@dzhechkov/keysarium-core": "^1.0.0"
47
+ },
48
+ "peerDependenciesMeta": {
49
+ "@dzhechkov/keysarium-core": {
50
+ "optional": true
51
+ }
52
+ }
53
+ }
package/src/cli.js ADDED
@@ -0,0 +1,151 @@
1
+ 'use strict';
2
+
3
+ const path = require('path');
4
+ const { bold, cyan, dim, green, yellow, red, info, error } = require('./utils');
5
+
6
+ // ---------------------------------------------------------------------------
7
+ // Banner
8
+ // ---------------------------------------------------------------------------
9
+ function showBanner() {
10
+ console.log('');
11
+ console.log(cyan('\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557'));
12
+ console.log(cyan('\u2551') + bold(' FEATURE-ADR \u2014 Adaptive Feature Development ') + cyan('\u2551'));
13
+ console.log(cyan('\u2551') + ' 9-step pipeline with Complexity Router (S/M/L/XL) ' + cyan('\u2551'));
14
+ console.log(cyan('\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D'));
15
+ console.log('');
16
+ }
17
+
18
+ // ---------------------------------------------------------------------------
19
+ // Version
20
+ // ---------------------------------------------------------------------------
21
+ function getVersion() {
22
+ const pkg = require('../package.json');
23
+ return pkg.version;
24
+ }
25
+
26
+ // ---------------------------------------------------------------------------
27
+ // Help
28
+ // ---------------------------------------------------------------------------
29
+ function showHelp() {
30
+ console.log(bold('Usage:') + ' npx @dzhechkov/skills-feature-adr ' + cyan('<command>') + dim(' [options]'));
31
+ console.log('');
32
+ console.log(bold('Commands:'));
33
+ console.log(' ' + green('init') + ' Install Feature ADR skill pack into current project ' + dim('(default)'));
34
+ console.log(' ' + green('update') + ' Update Feature ADR skill pack to latest version');
35
+ console.log(' ' + green('remove') + ' Remove Feature ADR skill pack from project');
36
+ console.log(' ' + green('list') + ' List installed Feature ADR components');
37
+ console.log(' ' + green('doctor') + ' Check Feature ADR installation health');
38
+ console.log('');
39
+ console.log(bold('Options:'));
40
+ console.log(' ' + yellow('--force') + ' Overwrite existing files without prompting');
41
+ console.log(' ' + yellow('--dry-run') + ' Show what would be done without making changes');
42
+ console.log(' ' + yellow('--help, -h') + ' Show this help message');
43
+ console.log(' ' + yellow('--version, -v') + ' Show version number');
44
+ console.log('');
45
+ console.log(bold('Examples:'));
46
+ console.log(dim(' $ ') + 'npx @dzhechkov/skills-feature-adr init');
47
+ console.log(dim(' $ ') + 'npx @dzhechkov/skills-feature-adr init --force');
48
+ console.log(dim(' $ ') + 'npx @dzhechkov/skills-feature-adr update --dry-run');
49
+ console.log(dim(' $ ') + 'npx @dzhechkov/skills-feature-adr doctor');
50
+ console.log('');
51
+ console.log(bold('Integration:'));
52
+ console.log(' Works alongside @dzhechkov/keysarium and @dzhechkov/skills-bto.');
53
+ console.log(' Install all three for the full toolkit.');
54
+ console.log('');
55
+ }
56
+
57
+ // ---------------------------------------------------------------------------
58
+ // Parse arguments
59
+ // ---------------------------------------------------------------------------
60
+ function parseArgs(argv) {
61
+ const args = argv.slice(2);
62
+
63
+ const flags = {
64
+ force: false,
65
+ dryRun: false,
66
+ targetDir: process.cwd(),
67
+ };
68
+
69
+ let command = null;
70
+
71
+ for (const arg of args) {
72
+ switch (arg) {
73
+ case '--force':
74
+ flags.force = true;
75
+ break;
76
+ case '--dry-run':
77
+ flags.dryRun = true;
78
+ break;
79
+ case '--help':
80
+ case '-h':
81
+ command = 'help';
82
+ break;
83
+ case '--version':
84
+ case '-v':
85
+ command = 'version';
86
+ break;
87
+ default:
88
+ if (!arg.startsWith('-') && command === null) {
89
+ command = arg;
90
+ }
91
+ break;
92
+ }
93
+ }
94
+
95
+ return { command, flags };
96
+ }
97
+
98
+ // ---------------------------------------------------------------------------
99
+ // Main
100
+ // ---------------------------------------------------------------------------
101
+ function main() {
102
+ const { command, flags } = parseArgs(process.argv);
103
+
104
+ // Handle version early (no banner)
105
+ if (command === 'version') {
106
+ console.log(getVersion());
107
+ return;
108
+ }
109
+
110
+ showBanner();
111
+
112
+ // Handle help early
113
+ if (command === 'help') {
114
+ showHelp();
115
+ return;
116
+ }
117
+
118
+ // Route to command handlers
119
+ const resolvedCommand = command || 'init';
120
+
121
+ switch (resolvedCommand) {
122
+ case 'init':
123
+ require('./commands/init')(flags);
124
+ break;
125
+
126
+ case 'update':
127
+ require('./commands/update')(flags);
128
+ break;
129
+
130
+ case 'remove':
131
+ require('./commands/remove')(flags);
132
+ break;
133
+
134
+ case 'list':
135
+ require('./commands/list')(flags);
136
+ break;
137
+
138
+ case 'doctor':
139
+ require('./commands/doctor')(flags);
140
+ break;
141
+
142
+ default:
143
+ error(`Unknown command: "${resolvedCommand}"`);
144
+ console.log('');
145
+ showHelp();
146
+ process.exitCode = 1;
147
+ break;
148
+ }
149
+ }
150
+
151
+ main();