sequant 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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +237 -0
  3. package/dist/bin/cli.d.ts +8 -0
  4. package/dist/bin/cli.d.ts.map +1 -0
  5. package/dist/bin/cli.js +70 -0
  6. package/dist/bin/cli.js.map +1 -0
  7. package/dist/src/commands/doctor.d.ts +8 -0
  8. package/dist/src/commands/doctor.d.ts.map +1 -0
  9. package/dist/src/commands/doctor.js +171 -0
  10. package/dist/src/commands/doctor.js.map +1 -0
  11. package/dist/src/commands/init.d.ts +11 -0
  12. package/dist/src/commands/init.d.ts.map +1 -0
  13. package/dist/src/commands/init.js +124 -0
  14. package/dist/src/commands/init.js.map +1 -0
  15. package/dist/src/commands/run.d.ts +18 -0
  16. package/dist/src/commands/run.d.ts.map +1 -0
  17. package/dist/src/commands/run.js +229 -0
  18. package/dist/src/commands/run.js.map +1 -0
  19. package/dist/src/commands/status.d.ts +5 -0
  20. package/dist/src/commands/status.d.ts.map +1 -0
  21. package/dist/src/commands/status.js +45 -0
  22. package/dist/src/commands/status.js.map +1 -0
  23. package/dist/src/commands/update.d.ts +10 -0
  24. package/dist/src/commands/update.d.ts.map +1 -0
  25. package/dist/src/commands/update.js +124 -0
  26. package/dist/src/commands/update.js.map +1 -0
  27. package/dist/src/index.d.ts +15 -0
  28. package/dist/src/index.d.ts.map +1 -0
  29. package/dist/src/index.js +13 -0
  30. package/dist/src/index.js.map +1 -0
  31. package/dist/src/lib/fs.d.ts +10 -0
  32. package/dist/src/lib/fs.d.ts.map +1 -0
  33. package/dist/src/lib/fs.js +44 -0
  34. package/dist/src/lib/fs.js.map +1 -0
  35. package/dist/src/lib/manifest.d.ts +14 -0
  36. package/dist/src/lib/manifest.d.ts.map +1 -0
  37. package/dist/src/lib/manifest.js +37 -0
  38. package/dist/src/lib/manifest.js.map +1 -0
  39. package/dist/src/lib/stacks.d.ts +22 -0
  40. package/dist/src/lib/stacks.d.ts.map +1 -0
  41. package/dist/src/lib/stacks.js +131 -0
  42. package/dist/src/lib/stacks.js.map +1 -0
  43. package/dist/src/lib/templates.d.ts +16 -0
  44. package/dist/src/lib/templates.d.ts.map +1 -0
  45. package/dist/src/lib/templates.js +118 -0
  46. package/dist/src/lib/templates.js.map +1 -0
  47. package/dist/src/lib/workflow/cli-args.d.ts +138 -0
  48. package/dist/src/lib/workflow/cli-args.d.ts.map +1 -0
  49. package/dist/src/lib/workflow/cli-args.js +210 -0
  50. package/dist/src/lib/workflow/cli-args.js.map +1 -0
  51. package/dist/src/lib/workflow/execute-issues.d.ts +42 -0
  52. package/dist/src/lib/workflow/execute-issues.d.ts.map +1 -0
  53. package/dist/src/lib/workflow/execute-issues.js +463 -0
  54. package/dist/src/lib/workflow/execute-issues.js.map +1 -0
  55. package/dist/src/lib/workflow/logger.d.ts +168 -0
  56. package/dist/src/lib/workflow/logger.d.ts.map +1 -0
  57. package/dist/src/lib/workflow/logger.js +249 -0
  58. package/dist/src/lib/workflow/logger.js.map +1 -0
  59. package/dist/src/lib/workflow/types.d.ts +89 -0
  60. package/dist/src/lib/workflow/types.d.ts.map +1 -0
  61. package/dist/src/lib/workflow/types.js +23 -0
  62. package/dist/src/lib/workflow/types.js.map +1 -0
  63. package/package.json +69 -0
  64. package/stacks/go.yaml +22 -0
  65. package/stacks/nextjs.yaml +28 -0
  66. package/stacks/python.yaml +24 -0
  67. package/stacks/rust.yaml +23 -0
  68. package/templates/hooks/post-tool.sh +301 -0
  69. package/templates/hooks/pre-tool.sh +350 -0
  70. package/templates/memory/constitution.md +60 -0
  71. package/templates/scripts/cleanup-worktree.sh +78 -0
  72. package/templates/scripts/list-worktrees.sh +50 -0
  73. package/templates/scripts/new-feature.sh +156 -0
  74. package/templates/settings.json +26 -0
  75. package/templates/skills/assess/SKILL.md +428 -0
  76. package/templates/skills/clean/SKILL.md +196 -0
  77. package/templates/skills/docs/SKILL.md +323 -0
  78. package/templates/skills/exec/SKILL.md +426 -0
  79. package/templates/skills/fullsolve/SKILL.md +479 -0
  80. package/templates/skills/loop/SKILL.md +310 -0
  81. package/templates/skills/qa/SKILL.md +261 -0
  82. package/templates/skills/qa/references/code-quality-exemplars.md +112 -0
  83. package/templates/skills/qa/references/code-review-checklist.md +77 -0
  84. package/templates/skills/qa/references/quality-gates.md +95 -0
  85. package/templates/skills/qa/references/testing-requirements.md +109 -0
  86. package/templates/skills/qa/scripts/quality-checks.sh +109 -0
  87. package/templates/skills/reflect/SKILL.md +159 -0
  88. package/templates/skills/reflect/references/documentation-tiers.md +70 -0
  89. package/templates/skills/reflect/references/phase-reflection.md +95 -0
  90. package/templates/skills/reflect/scripts/workflow-queries.ts +165 -0
  91. package/templates/skills/security-review/SKILL.md +344 -0
  92. package/templates/skills/security-review/references/security-checklists.md +377 -0
  93. package/templates/skills/solve/SKILL.md +242 -0
  94. package/templates/skills/spec/SKILL.md +169 -0
  95. package/templates/skills/spec/references/parallel-groups.md +72 -0
  96. package/templates/skills/spec/references/verification-criteria.md +104 -0
  97. package/templates/skills/test/SKILL.md +508 -0
  98. package/templates/skills/testgen/SKILL.md +561 -0
  99. package/templates/skills/verify/SKILL.md +266 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 admarble
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,237 @@
1
+ # Sequant
2
+
3
+ **Structured AI workflow for GitHub issues.**
4
+
5
+ Turn GitHub issues into working code through sequential AI-assisted phases with quality gates.
6
+
7
+ [![npm version](https://img.shields.io/npm/v/sequant.svg)](https://www.npmjs.com/package/sequant)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
9
+
10
+ ## Why Sequant?
11
+
12
+ When using AI coding assistants, work can become scattered and quality inconsistent. Sequant solves this by:
13
+
14
+ - **Consistent quality** — Every issue goes through the same review gates
15
+ - **Traceable decisions** — Plans and progress documented in GitHub issues
16
+ - **Isolated work** — Git worktrees prevent half-finished features from polluting main
17
+ - **AI-assisted** — Claude Code handles implementation while you review and approve
18
+
19
+ ## How It Works
20
+
21
+ ```
22
+ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
23
+ │ /spec │───▶│ /exec │───▶│ /test │───▶│ /qa │───▶ Merge
24
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
25
+ │ │ │ │
26
+ ā–¼ ā–¼ ā–¼ ā–¼
27
+ Plan Build Verify Review
28
+ (drafts AC) (worktree) (optional) (vs criteria)
29
+ ```
30
+
31
+ 1. **`/spec`** — Reads issue, drafts implementation plan, posts to GitHub for your approval
32
+ 2. **`/exec`** — Creates isolated git worktree, implements changes, runs tests
33
+ 3. **`/test`** — Optional browser/CLI verification
34
+ 4. **`/qa`** — Reviews code against acceptance criteria, suggests fixes
35
+
36
+ ## Quick Start
37
+
38
+ ### Prerequisites
39
+
40
+ | Requirement | Check Command |
41
+ |------------|---------------|
42
+ | [Claude Code](https://claude.ai/code) | `claude --version` |
43
+ | [GitHub CLI](https://cli.github.com/) | `gh auth status` |
44
+ | Node.js 18+ | `node --version` |
45
+ | Git | `git --version` |
46
+
47
+ ### Setup
48
+
49
+ ```bash
50
+ # Install and initialize in your project
51
+ npx sequant init
52
+
53
+ # Verify installation
54
+ npx sequant doctor
55
+ ```
56
+
57
+ ### First Workflow
58
+
59
+ Open Claude Code in your project, then:
60
+
61
+ ```bash
62
+ /spec 123 # Plan implementation for GitHub issue #123
63
+ /exec 123 # Implement the feature in a worktree
64
+ /qa 123 # Quality review before merge
65
+ ```
66
+
67
+ > Replace `123` with an actual GitHub issue number from your repository.
68
+
69
+ ## Installation
70
+
71
+ ```bash
72
+ npm install -g sequant
73
+ # or use npx
74
+ npx sequant init
75
+ ```
76
+
77
+ ## Features
78
+
79
+ - **šŸ”¢ Quantized** - Each issue is an atomic unit of work
80
+ - **šŸ”„ Sequential** - Phases execute in order with gates
81
+ - **🚦 Gated** - Quality checks before progression
82
+ - **🌳 Isolated** - Git worktrees prevent cross-contamination
83
+ - **šŸ“¦ Stack Adapters** - Pre-configured for Next.js, Rust, Python, Go
84
+ - **šŸ”„ Update-Safe** - Customize without losing updates
85
+
86
+ ## Commands
87
+
88
+ ### CLI Commands
89
+
90
+ ```bash
91
+ sequant init # Initialize in your project
92
+ sequant update # Update templates from package
93
+ sequant doctor # Check installation health
94
+ sequant status # Show version and config
95
+ sequant run <issues...> # Execute workflow for issues
96
+ ```
97
+
98
+ #### Run Command Options
99
+
100
+ ```bash
101
+ sequant run 123 # Single issue
102
+ sequant run 1 2 3 # Multiple issues in parallel
103
+ sequant run 1 2 3 --sequential # Run in order
104
+ sequant run 123 --phases spec,qa # Custom phases
105
+ sequant run 123 --dry-run # Preview without execution
106
+ ```
107
+
108
+ ### Workflow Commands (in Claude Code)
109
+
110
+ | Command | Phase | Purpose |
111
+ |---------|-------|---------|
112
+ | `/assess` | 0 | Issue triage and status assessment |
113
+ | `/spec` | 1 | Plan implementation vs acceptance criteria |
114
+ | `/exec` | 2 | Implement in feature worktree |
115
+ | `/test` | 2.5 | Browser-based UI testing (optional) |
116
+ | `/verify` | 2.5 | CLI/script verification (optional) |
117
+ | `/qa` | 3 | Code review and quality gate |
118
+ | `/docs` | 4 | Generate feature documentation |
119
+ | `/loop` | * | Fix iteration when tests fail |
120
+ | `/fullsolve` | 1-4 | Complete pipeline in one command |
121
+
122
+ ## Platform Support
123
+
124
+ | Platform | Status | Notes |
125
+ |----------|--------|-------|
126
+ | macOS | āœ… Tested | Full support with Claude Code, Cursor, VS Code |
127
+ | Linux | āœ… Supported | Bash required for shell scripts |
128
+ | Windows WSL | āœ… Supported | Use WSL2 with bash |
129
+ | Windows Native | āš ļø Limited | CLI works, but shell scripts require WSL |
130
+
131
+ ### Requirements
132
+
133
+ - **Node.js** 18.0.0 or higher
134
+ - **Git** for worktree support
135
+ - **GitHub CLI** (`gh`) for issue integration
136
+ - **Bash** for shell scripts (included in macOS/Linux, use WSL on Windows)
137
+
138
+ ### IDE Compatibility
139
+
140
+ | IDE | Status |
141
+ |-----|--------|
142
+ | Claude Code | āœ… Full support |
143
+ | Cursor | āœ… Supported |
144
+ | VS Code + Copilot | āœ… Supported |
145
+
146
+ ## Stack Support
147
+
148
+ Sequant auto-detects your project stack and configures appropriate commands:
149
+
150
+ | Stack | Detection | Test | Build | Lint |
151
+ |-------|-----------|------|-------|------|
152
+ | Next.js | `next.config.*` | `npm test` | `npm run build` | `npm run lint` |
153
+ | Rust | `Cargo.toml` | `cargo test` | `cargo build --release` | `cargo clippy` |
154
+ | Python | `pyproject.toml` | `pytest` | `python -m build` | `ruff check .` |
155
+ | Go | `go.mod` | `go test ./...` | `go build ./...` | `golangci-lint run` |
156
+
157
+ ## Customization
158
+
159
+ ### Local Overrides
160
+
161
+ Create files in `.claude/.local/` to override templates without losing updates:
162
+
163
+ ```
164
+ .claude/
165
+ ā”œā”€ā”€ skills/ # Package-provided (updated by sequant update)
166
+ ā”œā”€ā”€ skills.local/ # Your overrides (never modified)
167
+ ā”œā”€ā”€ hooks/ # Package-provided
168
+ ā”œā”€ā”€ hooks.local/ # Your overrides
169
+ └── memory/ # Your project context (never modified)
170
+ ```
171
+
172
+ ### Constitution
173
+
174
+ Edit `.claude/memory/constitution.md` to define project-specific principles:
175
+
176
+ ```markdown
177
+ # My Project Constitution
178
+
179
+ ## Core Principles
180
+ 1. Always use TypeScript strict mode
181
+ 2. Test coverage must exceed 80%
182
+ 3. All PRs require security review
183
+
184
+ ## Naming Conventions
185
+ - Components: PascalCase
186
+ - Utilities: camelCase
187
+ - Constants: SCREAMING_SNAKE_CASE
188
+ ```
189
+
190
+ ## Directory Structure
191
+
192
+ After `sequant init`:
193
+
194
+ ```
195
+ .claude/
196
+ ā”œā”€ā”€ skills/ # Workflow commands
197
+ │ ā”œā”€ā”€ spec/SKILL.md
198
+ │ ā”œā”€ā”€ exec/SKILL.md
199
+ │ ā”œā”€ā”€ qa/SKILL.md
200
+ │ └── ...
201
+ ā”œā”€ā”€ hooks/ # Pre/post tool hooks
202
+ │ ā”œā”€ā”€ pre-tool.sh
203
+ │ └── post-tool.sh
204
+ ā”œā”€ā”€ memory/ # Project context
205
+ │ └── constitution.md
206
+ └── settings.json # Hooks configuration
207
+
208
+ .sequant-manifest.json # Version tracking
209
+ ```
210
+
211
+ ## Documentation
212
+
213
+ - [Run Command](docs/run-command.md) — Batch execution options
214
+ - [Customization Guide](docs/customization.md) — Override templates safely
215
+ - [Troubleshooting](docs/troubleshooting.md) — Common issues and solutions
216
+ - [Testing Guide](docs/testing.md) — Cross-platform testing matrix
217
+ - Stack Guides: [Next.js](docs/stacks/nextjs.md) | [Rust](docs/stacks/rust.md) | [Python](docs/stacks/python.md) | [Go](docs/stacks/go.md)
218
+
219
+ ## Philosophy
220
+
221
+ Sequant is built on these principles:
222
+
223
+ 1. **Explicit over implicit** — Every phase has clear inputs and outputs
224
+ 2. **Quality gates** — No phase completes without validation
225
+ 3. **Isolation** — Work happens in dedicated worktrees
226
+ 4. **Traceability** — All decisions recorded in GitHub issues
227
+ 5. **Composability** — Use phases individually or combine them
228
+
229
+ ## Acknowledgments
230
+
231
+ Built on ideas from:
232
+ - [Agent Skills](https://agentskills.io) — Open standard for cross-platform skills
233
+ - [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD) — Update-safe directories
234
+
235
+ ## License
236
+
237
+ MIT
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Sequant CLI - Quantize your development workflow
4
+ *
5
+ * Sequential AI phases with quality gates for any codebase.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Sequant CLI - Quantize your development workflow
4
+ *
5
+ * Sequential AI phases with quality gates for any codebase.
6
+ */
7
+ import { Command } from "commander";
8
+ import chalk from "chalk";
9
+ import { initCommand } from "../src/commands/init.js";
10
+ import { updateCommand } from "../src/commands/update.js";
11
+ import { doctorCommand } from "../src/commands/doctor.js";
12
+ import { statusCommand } from "../src/commands/status.js";
13
+ import { runCommand } from "../src/commands/run.js";
14
+ const program = new Command();
15
+ // Handle --no-color before parsing
16
+ if (process.argv.includes("--no-color")) {
17
+ process.env.FORCE_COLOR = "0";
18
+ }
19
+ program
20
+ .name("sequant")
21
+ .description("Quantize your development workflow - Sequential AI phases with quality gates")
22
+ .version("1.0.0")
23
+ .option("--no-color", "Disable colored output");
24
+ program
25
+ .command("init")
26
+ .description("Initialize Sequant in your project")
27
+ .option("-s, --stack <stack>", "Specify stack (nextjs, rust, python, go)")
28
+ .option("-y, --yes", "Skip confirmation prompts")
29
+ .option("-f, --force", "Overwrite existing configuration")
30
+ .action(initCommand);
31
+ program
32
+ .command("update")
33
+ .description("Update templates from the Sequant package")
34
+ .option("-d, --dry-run", "Show what would be updated without making changes")
35
+ .option("-f, --force", "Overwrite local modifications")
36
+ .action(updateCommand);
37
+ program
38
+ .command("doctor")
39
+ .description("Check your Sequant installation for issues")
40
+ .action(doctorCommand);
41
+ program
42
+ .command("status")
43
+ .description("Show Sequant version and configuration status")
44
+ .action(statusCommand);
45
+ program
46
+ .command("run")
47
+ .description("Execute workflow for GitHub issues")
48
+ .argument("<issues...>", "Issue numbers to process")
49
+ .option("--phases <list>", "Phases to run (default: spec,exec,qa)")
50
+ .option("--sequential", "Run issues sequentially")
51
+ .option("-d, --dry-run", "Preview without execution")
52
+ .option("-v, --verbose", "Verbose output")
53
+ .option("--timeout <seconds>", "Timeout per phase in seconds", parseInt)
54
+ .action(runCommand);
55
+ // Parse and execute
56
+ program.parse();
57
+ // Show help if no command provided
58
+ if (!process.argv.slice(2).length) {
59
+ console.log(chalk.green(`
60
+ ╔═══════════════════════════════════════════════════════════╗
61
+ ā•‘ ā•‘
62
+ ā•‘ ${chalk.bold("Sequant")} - Quantize your development workflow ā•‘
63
+ ā•‘ ā•‘
64
+ ā•‘ Sequential AI phases with quality gates ā•‘
65
+ ā•‘ ā•‘
66
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•
67
+ `));
68
+ program.help();
69
+ }
70
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,mCAAmC;AACnC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;AAChC,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CACV,8EAA8E,CAC/E;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;AAElD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;KACzE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;KAC5E,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,EAAE,QAAQ,CAAC;KACvE,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,oBAAoB;AACpB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC;;;QAGR,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;;;;;GAK1B,CAAC,CACD,CAAC;IACF,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * sequant doctor - Check installation health
3
+ */
4
+ interface DoctorOptions {
5
+ }
6
+ export declare function doctorCommand(options: DoctorOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,UAAU,aAAa;CAEtB;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0KzE"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * sequant doctor - Check installation health
3
+ */
4
+ import chalk from "chalk";
5
+ import { fileExists, isExecutable } from "../lib/fs.js";
6
+ import { getManifest } from "../lib/manifest.js";
7
+ export async function doctorCommand(options) {
8
+ console.log(chalk.blue("\nšŸ” Running health checks...\n"));
9
+ const checks = [];
10
+ // Check 1: Manifest exists
11
+ const manifest = await getManifest();
12
+ if (manifest) {
13
+ checks.push({
14
+ name: "Manifest",
15
+ status: "pass",
16
+ message: `Found .sequant-manifest.json (v${manifest.version})`,
17
+ });
18
+ }
19
+ else {
20
+ checks.push({
21
+ name: "Manifest",
22
+ status: "fail",
23
+ message: "Missing .sequant-manifest.json - run `sequant init`",
24
+ });
25
+ }
26
+ // Check 2: Skills directory
27
+ const skillsExist = await fileExists(".claude/skills");
28
+ if (skillsExist) {
29
+ checks.push({
30
+ name: "Skills",
31
+ status: "pass",
32
+ message: "Skills directory exists",
33
+ });
34
+ }
35
+ else {
36
+ checks.push({
37
+ name: "Skills",
38
+ status: "fail",
39
+ message: "Missing .claude/skills/ directory",
40
+ });
41
+ }
42
+ // Check 3: Core skills present
43
+ const coreSkills = ["spec", "exec", "qa"];
44
+ const missingSkills = [];
45
+ for (const skill of coreSkills) {
46
+ if (!(await fileExists(`.claude/skills/${skill}/SKILL.md`))) {
47
+ missingSkills.push(skill);
48
+ }
49
+ }
50
+ if (missingSkills.length === 0) {
51
+ checks.push({
52
+ name: "Core Skills",
53
+ status: "pass",
54
+ message: "All core skills present (spec, exec, qa)",
55
+ });
56
+ }
57
+ else {
58
+ checks.push({
59
+ name: "Core Skills",
60
+ status: "fail",
61
+ message: `Missing skills: ${missingSkills.join(", ")}`,
62
+ });
63
+ }
64
+ // Check 4: Hooks directory
65
+ const hooksExist = await fileExists(".claude/hooks");
66
+ if (hooksExist) {
67
+ checks.push({
68
+ name: "Hooks",
69
+ status: "pass",
70
+ message: "Hooks directory exists",
71
+ });
72
+ }
73
+ else {
74
+ checks.push({
75
+ name: "Hooks",
76
+ status: "warn",
77
+ message: "No hooks directory (optional but recommended)",
78
+ });
79
+ }
80
+ // Check 5: Hook scripts executable
81
+ const preToolHook = ".claude/hooks/pre-tool.sh";
82
+ if (await fileExists(preToolHook)) {
83
+ if (await isExecutable(preToolHook)) {
84
+ checks.push({
85
+ name: "Hook Permissions",
86
+ status: "pass",
87
+ message: "Hook scripts are executable",
88
+ });
89
+ }
90
+ else {
91
+ checks.push({
92
+ name: "Hook Permissions",
93
+ status: "warn",
94
+ message: "Hook scripts not executable - run: chmod +x .claude/hooks/*.sh",
95
+ });
96
+ }
97
+ }
98
+ // Check 6: Settings.json
99
+ const settingsExist = await fileExists(".claude/settings.json");
100
+ if (settingsExist) {
101
+ checks.push({
102
+ name: "Settings",
103
+ status: "pass",
104
+ message: "Settings file exists",
105
+ });
106
+ }
107
+ else {
108
+ checks.push({
109
+ name: "Settings",
110
+ status: "warn",
111
+ message: "No settings.json (hooks won't be triggered)",
112
+ });
113
+ }
114
+ // Check 7: Git repo
115
+ const gitExists = await fileExists(".git");
116
+ if (gitExists) {
117
+ checks.push({
118
+ name: "Git Repository",
119
+ status: "pass",
120
+ message: "Git repository detected",
121
+ });
122
+ }
123
+ else {
124
+ checks.push({
125
+ name: "Git Repository",
126
+ status: "warn",
127
+ message: "Not a git repository (worktree features won't work)",
128
+ });
129
+ }
130
+ // Display results
131
+ let passCount = 0;
132
+ let warnCount = 0;
133
+ let failCount = 0;
134
+ for (const check of checks) {
135
+ const icon = check.status === "pass"
136
+ ? chalk.green("āœ“")
137
+ : check.status === "warn"
138
+ ? chalk.yellow("⚠")
139
+ : chalk.red("āœ—");
140
+ const color = check.status === "pass"
141
+ ? chalk.green
142
+ : check.status === "warn"
143
+ ? chalk.yellow
144
+ : chalk.red;
145
+ console.log(`${icon} ${chalk.bold(check.name)}: ${color(check.message)}`);
146
+ if (check.status === "pass")
147
+ passCount++;
148
+ else if (check.status === "warn")
149
+ warnCount++;
150
+ else
151
+ failCount++;
152
+ }
153
+ // Summary
154
+ console.log(chalk.bold("\nSummary:"));
155
+ console.log(chalk.green(` āœ“ Passed: ${passCount}`));
156
+ if (warnCount > 0)
157
+ console.log(chalk.yellow(` ⚠ Warnings: ${warnCount}`));
158
+ if (failCount > 0)
159
+ console.log(chalk.red(` āœ— Failed: ${failCount}`));
160
+ if (failCount > 0) {
161
+ console.log(chalk.red("\nāŒ Some checks failed. Run `sequant init` to fix."));
162
+ process.exit(1);
163
+ }
164
+ else if (warnCount > 0) {
165
+ console.log(chalk.yellow("\nāš ļø Some warnings found but Sequant should work."));
166
+ }
167
+ else {
168
+ console.log(chalk.green("\nāœ… All checks passed!"));
169
+ }
170
+ }
171
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * sequant init - Initialize Sequant in a project
3
+ */
4
+ interface InitOptions {
5
+ stack?: string;
6
+ yes?: boolean;
7
+ force?: boolean;
8
+ }
9
+ export declare function initCommand(options: InitOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIrE"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * sequant init - Initialize Sequant in a project
3
+ */
4
+ import chalk from "chalk";
5
+ import inquirer from "inquirer";
6
+ import { detectStack } from "../lib/stacks.js";
7
+ import { copyTemplates } from "../lib/templates.js";
8
+ import { createManifest } from "../lib/manifest.js";
9
+ import { fileExists, ensureDir } from "../lib/fs.js";
10
+ export async function initCommand(options) {
11
+ console.log(chalk.green("\nšŸš€ Initializing Sequant...\n"));
12
+ // Check if already initialized
13
+ const configExists = await fileExists(".claude/settings.json");
14
+ if (configExists && !options.force) {
15
+ console.log(chalk.yellow("āš ļø Sequant appears to be already initialized (.claude/settings.json exists)"));
16
+ console.log(chalk.gray(" Use --force to reinitialize\n"));
17
+ if (!options.yes) {
18
+ const { proceed } = await inquirer.prompt([
19
+ {
20
+ type: "confirm",
21
+ name: "proceed",
22
+ message: "Continue anyway?",
23
+ default: false,
24
+ },
25
+ ]);
26
+ if (!proceed) {
27
+ console.log(chalk.gray("Aborted."));
28
+ return;
29
+ }
30
+ }
31
+ }
32
+ // Detect or prompt for stack
33
+ let stack = options.stack;
34
+ if (!stack) {
35
+ const detected = await detectStack();
36
+ if (detected && options.yes) {
37
+ stack = detected;
38
+ console.log(chalk.blue(`šŸ“¦ Detected stack: ${stack}`));
39
+ }
40
+ else if (detected) {
41
+ const { confirmedStack } = await inquirer.prompt([
42
+ {
43
+ type: "list",
44
+ name: "confirmedStack",
45
+ message: `Detected ${detected} project. Is this correct?`,
46
+ choices: [
47
+ { name: `Yes, use ${detected}`, value: detected },
48
+ { name: "No, let me choose", value: null },
49
+ ],
50
+ },
51
+ ]);
52
+ stack = confirmedStack;
53
+ }
54
+ if (!stack) {
55
+ const { selectedStack } = await inquirer.prompt([
56
+ {
57
+ type: "list",
58
+ name: "selectedStack",
59
+ message: "Select your project stack:",
60
+ choices: [
61
+ { name: "Next.js / React", value: "nextjs" },
62
+ { name: "Rust", value: "rust" },
63
+ { name: "Python", value: "python" },
64
+ { name: "Go", value: "go" },
65
+ { name: "Generic (no stack-specific config)", value: "generic" },
66
+ ],
67
+ },
68
+ ]);
69
+ stack = selectedStack;
70
+ }
71
+ }
72
+ console.log(chalk.blue(`\nšŸ“‹ Stack: ${stack}`));
73
+ // Show what will be created
74
+ console.log(chalk.gray("\nWill create:"));
75
+ console.log(chalk.gray(" .claude/"));
76
+ console.log(chalk.gray(" ā”œā”€ā”€ skills/ (14 workflow skills)"));
77
+ console.log(chalk.gray(" ā”œā”€ā”€ hooks/ (pre/post tool hooks)"));
78
+ console.log(chalk.gray(" ā”œā”€ā”€ memory/ (constitution & context)"));
79
+ console.log(chalk.gray(" └── settings.json (hooks configuration)"));
80
+ console.log(chalk.gray(" scripts/dev/"));
81
+ console.log(chalk.gray(" └── *.sh (worktree helpers)"));
82
+ if (!options.yes) {
83
+ const { confirm } = await inquirer.prompt([
84
+ {
85
+ type: "confirm",
86
+ name: "confirm",
87
+ message: "Proceed with installation?",
88
+ default: true,
89
+ },
90
+ ]);
91
+ if (!confirm) {
92
+ console.log(chalk.gray("Aborted."));
93
+ return;
94
+ }
95
+ }
96
+ // Create directories
97
+ console.log(chalk.blue("\nšŸ“ Creating directories..."));
98
+ await ensureDir(".claude/skills");
99
+ await ensureDir(".claude/hooks");
100
+ await ensureDir(".claude/memory");
101
+ await ensureDir("scripts/dev");
102
+ // Copy templates
103
+ console.log(chalk.blue("šŸ“„ Copying templates..."));
104
+ await copyTemplates(stack);
105
+ // Create manifest
106
+ console.log(chalk.blue("šŸ“‹ Creating manifest..."));
107
+ await createManifest(stack);
108
+ // Success message
109
+ console.log(chalk.green(`
110
+ āœ… Sequant initialized successfully!
111
+
112
+ ${chalk.bold("Next steps:")}
113
+ 1. Review .claude/memory/constitution.md and customize for your project
114
+ 2. Start using workflow commands in Claude Code:
115
+
116
+ ${chalk.cyan("/spec 123")} - Plan implementation for issue #123
117
+ ${chalk.cyan("/exec 123")} - Implement the feature
118
+ ${chalk.cyan("/qa 123")} - Quality review
119
+
120
+ ${chalk.bold("Documentation:")}
121
+ https://github.com/admarble/sequant#readme
122
+ `));
123
+ }
124
+ //# sourceMappingURL=init.js.map