sequant 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -8
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +70 -0
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/doctor.test.d.ts +2 -0
- package/dist/src/commands/doctor.test.d.ts.map +1 -0
- package/dist/src/commands/doctor.test.js +209 -0
- package/dist/src/commands/doctor.test.js.map +1 -0
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +69 -2
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/init.test.d.ts +2 -0
- package/dist/src/commands/init.test.d.ts.map +1 -0
- package/dist/src/commands/init.test.js +195 -0
- package/dist/src/commands/init.test.js.map +1 -0
- package/dist/src/lib/stacks.d.ts.map +1 -1
- package/dist/src/lib/stacks.js +39 -0
- package/dist/src/lib/stacks.js.map +1 -1
- package/dist/src/lib/stacks.test.d.ts +2 -0
- package/dist/src/lib/stacks.test.d.ts.map +1 -0
- package/dist/src/lib/stacks.test.js +145 -0
- package/dist/src/lib/stacks.test.js.map +1 -0
- package/package.json +4 -3
- package/stacks/astro.yaml +35 -0
- package/templates/hooks/post-tool.sh +0 -11
- package/templates/hooks/pre-tool.sh +2 -2
- package/templates/memory/constitution.md +8 -0
- package/templates/scripts/cleanup-worktree.sh +1 -1
- package/templates/scripts/new-feature.sh +7 -5
- package/templates/skills/assess/SKILL.md +16 -16
- package/templates/skills/clean/SKILL.md +2 -2
- package/templates/skills/docs/SKILL.md +32 -34
- package/templates/skills/exec/SKILL.md +17 -25
- package/templates/skills/fullsolve/SKILL.md +18 -16
- package/templates/skills/loop/SKILL.md +8 -5
- package/templates/skills/qa/SKILL.md +22 -4
- package/templates/skills/qa/references/code-quality-exemplars.md +23 -28
- package/templates/skills/qa/references/code-review-checklist.md +6 -17
- package/templates/skills/qa/scripts/quality-checks.sh +4 -17
- package/templates/skills/reflect/SKILL.md +4 -2
- package/templates/skills/reflect/references/documentation-tiers.md +3 -3
- package/templates/skills/security-review/references/security-checklists.md +10 -8
- package/templates/skills/solve/SKILL.md +109 -155
- package/templates/skills/spec/SKILL.md +2 -3
- package/templates/skills/spec/references/parallel-groups.md +1 -1
- package/templates/skills/spec/references/verification-criteria.md +1 -1
- package/templates/skills/test/SKILL.md +6 -5
- package/templates/skills/testgen/SKILL.md +0 -1
- package/templates/skills/verify/SKILL.md +5 -5
- package/templates/skills/reflect/scripts/workflow-queries.ts +0 -165
package/README.md
CHANGED
|
@@ -37,12 +37,13 @@ When using AI coding assistants, work can become scattered and quality inconsist
|
|
|
37
37
|
|
|
38
38
|
### Prerequisites
|
|
39
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` |
|
|
40
|
+
| Requirement | Check Command | Notes |
|
|
41
|
+
|------------|---------------|-------|
|
|
42
|
+
| [Claude Code](https://claude.ai/code) | `claude --version` | Required |
|
|
43
|
+
| [GitHub CLI](https://cli.github.com/) | `gh auth status` | Required, must be authenticated |
|
|
44
|
+
| Node.js 18+ | `node --version` | Required |
|
|
45
|
+
| Git | `git --version` | Required |
|
|
46
|
+
| [jq](https://jqlang.github.io/jq/) | `jq --version` | Optional, improves hook performance |
|
|
46
47
|
|
|
47
48
|
### Setup
|
|
48
49
|
|
|
@@ -50,10 +51,12 @@ When using AI coding assistants, work can become scattered and quality inconsist
|
|
|
50
51
|
# Install and initialize in your project
|
|
51
52
|
npx sequant init
|
|
52
53
|
|
|
53
|
-
# Verify installation
|
|
54
|
+
# Verify installation and prerequisites
|
|
54
55
|
npx sequant doctor
|
|
55
56
|
```
|
|
56
57
|
|
|
58
|
+
The `doctor` command checks all prerequisites including GitHub CLI authentication.
|
|
59
|
+
|
|
57
60
|
### First Workflow
|
|
58
61
|
|
|
59
62
|
Open Claude Code in your project, then:
|
|
@@ -132,8 +135,9 @@ sequant run 123 --dry-run # Preview without execution
|
|
|
132
135
|
|
|
133
136
|
- **Node.js** 18.0.0 or higher
|
|
134
137
|
- **Git** for worktree support
|
|
135
|
-
- **GitHub CLI** (`gh`) for issue integration
|
|
138
|
+
- **GitHub CLI** (`gh`) for issue integration — must be authenticated via `gh auth login`
|
|
136
139
|
- **Bash** for shell scripts (included in macOS/Linux, use WSL on Windows)
|
|
140
|
+
- **jq** (optional) for faster JSON parsing in hooks — falls back to grep if not installed
|
|
137
141
|
|
|
138
142
|
### IDE Compatibility
|
|
139
143
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgCH,UAAU,aAAa;CAEtB;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuNzE"}
|
|
@@ -2,8 +2,33 @@
|
|
|
2
2
|
* sequant doctor - Check installation health
|
|
3
3
|
*/
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
+
import { execSync } from "child_process";
|
|
5
6
|
import { fileExists, isExecutable } from "../lib/fs.js";
|
|
6
7
|
import { getManifest } from "../lib/manifest.js";
|
|
8
|
+
/**
|
|
9
|
+
* Check if a command exists on the system
|
|
10
|
+
*/
|
|
11
|
+
function commandExists(cmd) {
|
|
12
|
+
try {
|
|
13
|
+
execSync(`command -v ${cmd}`, { stdio: "ignore" });
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if gh CLI is authenticated
|
|
22
|
+
*/
|
|
23
|
+
function isGhAuthenticated() {
|
|
24
|
+
try {
|
|
25
|
+
execSync("gh auth status", { stdio: "ignore" });
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
7
32
|
export async function doctorCommand(options) {
|
|
8
33
|
console.log(chalk.blue("\n🔍 Running health checks...\n"));
|
|
9
34
|
const checks = [];
|
|
@@ -127,6 +152,51 @@ export async function doctorCommand(options) {
|
|
|
127
152
|
message: "Not a git repository (worktree features won't work)",
|
|
128
153
|
});
|
|
129
154
|
}
|
|
155
|
+
// Check 8: GitHub CLI installed
|
|
156
|
+
if (commandExists("gh")) {
|
|
157
|
+
checks.push({
|
|
158
|
+
name: "GitHub CLI",
|
|
159
|
+
status: "pass",
|
|
160
|
+
message: "gh CLI is installed",
|
|
161
|
+
});
|
|
162
|
+
// Check 9: GitHub CLI authenticated (only if gh exists)
|
|
163
|
+
if (isGhAuthenticated()) {
|
|
164
|
+
checks.push({
|
|
165
|
+
name: "GitHub Auth",
|
|
166
|
+
status: "pass",
|
|
167
|
+
message: "gh CLI is authenticated",
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
checks.push({
|
|
172
|
+
name: "GitHub Auth",
|
|
173
|
+
status: "fail",
|
|
174
|
+
message: "gh CLI not authenticated - run: gh auth login",
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
checks.push({
|
|
180
|
+
name: "GitHub CLI",
|
|
181
|
+
status: "fail",
|
|
182
|
+
message: "gh CLI not installed - see: https://cli.github.com",
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// Check 10: jq installed (optional but recommended)
|
|
186
|
+
if (commandExists("jq")) {
|
|
187
|
+
checks.push({
|
|
188
|
+
name: "jq",
|
|
189
|
+
status: "pass",
|
|
190
|
+
message: "jq is installed (faster JSON parsing in hooks)",
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
checks.push({
|
|
195
|
+
name: "jq",
|
|
196
|
+
status: "warn",
|
|
197
|
+
message: "jq not installed (optional, hooks will use grep fallback)",
|
|
198
|
+
});
|
|
199
|
+
}
|
|
130
200
|
// Display results
|
|
131
201
|
let passCount = 0;
|
|
132
202
|
let warnCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.test.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { execSync } from "child_process";
|
|
3
|
+
// Mock child_process
|
|
4
|
+
vi.mock("child_process", () => ({
|
|
5
|
+
execSync: vi.fn(),
|
|
6
|
+
}));
|
|
7
|
+
// Mock fs functions
|
|
8
|
+
vi.mock("../lib/fs.js", () => ({
|
|
9
|
+
fileExists: vi.fn(),
|
|
10
|
+
isExecutable: vi.fn(),
|
|
11
|
+
}));
|
|
12
|
+
// Mock manifest
|
|
13
|
+
vi.mock("../lib/manifest.js", () => ({
|
|
14
|
+
getManifest: vi.fn(),
|
|
15
|
+
}));
|
|
16
|
+
import { doctorCommand } from "./doctor.js";
|
|
17
|
+
import { fileExists, isExecutable } from "../lib/fs.js";
|
|
18
|
+
import { getManifest } from "../lib/manifest.js";
|
|
19
|
+
const mockExecSync = vi.mocked(execSync);
|
|
20
|
+
const mockFileExists = vi.mocked(fileExists);
|
|
21
|
+
const mockIsExecutable = vi.mocked(isExecutable);
|
|
22
|
+
const mockGetManifest = vi.mocked(getManifest);
|
|
23
|
+
describe("doctor command", () => {
|
|
24
|
+
let consoleLogSpy;
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
let processExitSpy;
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
vi.resetAllMocks();
|
|
29
|
+
consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => { });
|
|
30
|
+
processExitSpy = vi
|
|
31
|
+
.spyOn(process, "exit")
|
|
32
|
+
.mockImplementation((() => undefined));
|
|
33
|
+
// Default: all files exist, all commands work
|
|
34
|
+
mockFileExists.mockResolvedValue(true);
|
|
35
|
+
mockIsExecutable.mockResolvedValue(true);
|
|
36
|
+
mockGetManifest.mockResolvedValue({
|
|
37
|
+
version: "0.1.0",
|
|
38
|
+
stack: "nextjs",
|
|
39
|
+
installedAt: "2024-01-01T00:00:00.000Z",
|
|
40
|
+
files: {},
|
|
41
|
+
});
|
|
42
|
+
mockExecSync.mockImplementation(() => Buffer.from(""));
|
|
43
|
+
});
|
|
44
|
+
afterEach(() => {
|
|
45
|
+
consoleLogSpy.mockRestore();
|
|
46
|
+
processExitSpy.mockRestore();
|
|
47
|
+
});
|
|
48
|
+
describe("GitHub CLI checks", () => {
|
|
49
|
+
it("passes when gh CLI is installed", async () => {
|
|
50
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
51
|
+
if (cmd === "command -v gh")
|
|
52
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
53
|
+
if (cmd === "gh auth status")
|
|
54
|
+
return Buffer.from("");
|
|
55
|
+
if (cmd === "command -v jq")
|
|
56
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
57
|
+
return Buffer.from("");
|
|
58
|
+
});
|
|
59
|
+
await doctorCommand({});
|
|
60
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
61
|
+
expect(output).toContain("GitHub CLI");
|
|
62
|
+
expect(output).toContain("gh CLI is installed");
|
|
63
|
+
});
|
|
64
|
+
it("fails when gh CLI is not installed", async () => {
|
|
65
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
66
|
+
if (cmd === "command -v gh") {
|
|
67
|
+
throw new Error("command not found");
|
|
68
|
+
}
|
|
69
|
+
if (cmd === "command -v jq")
|
|
70
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
71
|
+
return Buffer.from("");
|
|
72
|
+
});
|
|
73
|
+
await doctorCommand({});
|
|
74
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
75
|
+
expect(output).toContain("GitHub CLI");
|
|
76
|
+
expect(output).toContain("gh CLI not installed");
|
|
77
|
+
expect(processExitSpy).toHaveBeenCalledWith(1);
|
|
78
|
+
});
|
|
79
|
+
it("passes when gh CLI is authenticated", async () => {
|
|
80
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
81
|
+
if (cmd === "command -v gh")
|
|
82
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
83
|
+
if (cmd === "gh auth status")
|
|
84
|
+
return Buffer.from("");
|
|
85
|
+
if (cmd === "command -v jq")
|
|
86
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
87
|
+
return Buffer.from("");
|
|
88
|
+
});
|
|
89
|
+
await doctorCommand({});
|
|
90
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
91
|
+
expect(output).toContain("GitHub Auth");
|
|
92
|
+
expect(output).toContain("gh CLI is authenticated");
|
|
93
|
+
});
|
|
94
|
+
it("fails when gh CLI is not authenticated", async () => {
|
|
95
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
96
|
+
if (cmd === "command -v gh")
|
|
97
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
98
|
+
if (cmd === "gh auth status") {
|
|
99
|
+
throw new Error("not authenticated");
|
|
100
|
+
}
|
|
101
|
+
if (cmd === "command -v jq")
|
|
102
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
103
|
+
return Buffer.from("");
|
|
104
|
+
});
|
|
105
|
+
await doctorCommand({});
|
|
106
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
107
|
+
expect(output).toContain("GitHub Auth");
|
|
108
|
+
expect(output).toContain("gh CLI not authenticated");
|
|
109
|
+
expect(processExitSpy).toHaveBeenCalledWith(1);
|
|
110
|
+
});
|
|
111
|
+
it("skips auth check when gh CLI is not installed", async () => {
|
|
112
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
113
|
+
if (cmd === "command -v gh") {
|
|
114
|
+
throw new Error("command not found");
|
|
115
|
+
}
|
|
116
|
+
if (cmd === "command -v jq")
|
|
117
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
118
|
+
return Buffer.from("");
|
|
119
|
+
});
|
|
120
|
+
await doctorCommand({});
|
|
121
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
122
|
+
// Should not contain auth check result since gh is not installed
|
|
123
|
+
expect(output).not.toContain("GitHub Auth");
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
describe("jq checks", () => {
|
|
127
|
+
it("passes when jq is installed", async () => {
|
|
128
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
129
|
+
if (cmd === "command -v gh")
|
|
130
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
131
|
+
if (cmd === "gh auth status")
|
|
132
|
+
return Buffer.from("");
|
|
133
|
+
if (cmd === "command -v jq")
|
|
134
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
135
|
+
return Buffer.from("");
|
|
136
|
+
});
|
|
137
|
+
await doctorCommand({});
|
|
138
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
139
|
+
expect(output).toContain("jq");
|
|
140
|
+
expect(output).toContain("jq is installed");
|
|
141
|
+
});
|
|
142
|
+
it("warns when jq is not installed", async () => {
|
|
143
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
144
|
+
if (cmd === "command -v gh")
|
|
145
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
146
|
+
if (cmd === "gh auth status")
|
|
147
|
+
return Buffer.from("");
|
|
148
|
+
if (cmd === "command -v jq") {
|
|
149
|
+
throw new Error("command not found");
|
|
150
|
+
}
|
|
151
|
+
return Buffer.from("");
|
|
152
|
+
});
|
|
153
|
+
await doctorCommand({});
|
|
154
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
155
|
+
expect(output).toContain("jq");
|
|
156
|
+
expect(output).toContain("jq not installed");
|
|
157
|
+
expect(output).toContain("Warnings: 1");
|
|
158
|
+
// Should not exit with failure since jq is optional
|
|
159
|
+
expect(processExitSpy).not.toHaveBeenCalled();
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
describe("combined scenarios", () => {
|
|
163
|
+
it("all checks pass when everything is installed and configured", async () => {
|
|
164
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
165
|
+
if (cmd === "command -v gh")
|
|
166
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
167
|
+
if (cmd === "gh auth status")
|
|
168
|
+
return Buffer.from("");
|
|
169
|
+
if (cmd === "command -v jq")
|
|
170
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
171
|
+
return Buffer.from("");
|
|
172
|
+
});
|
|
173
|
+
await doctorCommand({});
|
|
174
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
175
|
+
expect(output).toContain("All checks passed");
|
|
176
|
+
expect(processExitSpy).not.toHaveBeenCalled();
|
|
177
|
+
});
|
|
178
|
+
it("exits with failure when gh is missing even if jq is present", async () => {
|
|
179
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
180
|
+
if (cmd === "command -v gh") {
|
|
181
|
+
throw new Error("command not found");
|
|
182
|
+
}
|
|
183
|
+
if (cmd === "command -v jq")
|
|
184
|
+
return Buffer.from("/usr/local/bin/jq");
|
|
185
|
+
return Buffer.from("");
|
|
186
|
+
});
|
|
187
|
+
await doctorCommand({});
|
|
188
|
+
expect(processExitSpy).toHaveBeenCalledWith(1);
|
|
189
|
+
});
|
|
190
|
+
it("shows only warnings (no failure) when only jq is missing", async () => {
|
|
191
|
+
mockExecSync.mockImplementation((cmd) => {
|
|
192
|
+
if (cmd === "command -v gh")
|
|
193
|
+
return Buffer.from("/usr/local/bin/gh");
|
|
194
|
+
if (cmd === "gh auth status")
|
|
195
|
+
return Buffer.from("");
|
|
196
|
+
if (cmd === "command -v jq") {
|
|
197
|
+
throw new Error("command not found");
|
|
198
|
+
}
|
|
199
|
+
return Buffer.from("");
|
|
200
|
+
});
|
|
201
|
+
await doctorCommand({});
|
|
202
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
203
|
+
expect(output).toContain("Warnings:");
|
|
204
|
+
expect(output).toContain("should work");
|
|
205
|
+
expect(processExitSpy).not.toHaveBeenCalled();
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
//# sourceMappingURL=doctor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../../src/commands/doctor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8DH,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,CA+JrE"}
|
|
@@ -2,13 +2,71 @@
|
|
|
2
2
|
* sequant init - Initialize Sequant in a project
|
|
3
3
|
*/
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
+
import { execSync } from "child_process";
|
|
5
6
|
import inquirer from "inquirer";
|
|
6
7
|
import { detectStack } from "../lib/stacks.js";
|
|
7
8
|
import { copyTemplates } from "../lib/templates.js";
|
|
8
9
|
import { createManifest } from "../lib/manifest.js";
|
|
9
10
|
import { fileExists, ensureDir } from "../lib/fs.js";
|
|
11
|
+
/**
|
|
12
|
+
* Check if a command exists on the system
|
|
13
|
+
*/
|
|
14
|
+
function commandExists(cmd) {
|
|
15
|
+
try {
|
|
16
|
+
execSync(`command -v ${cmd}`, { stdio: "ignore" });
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if gh CLI is authenticated
|
|
25
|
+
*/
|
|
26
|
+
function isGhAuthenticated() {
|
|
27
|
+
try {
|
|
28
|
+
execSync("gh auth status", { stdio: "ignore" });
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check prerequisites and display warnings
|
|
37
|
+
*/
|
|
38
|
+
function checkPrerequisites() {
|
|
39
|
+
const warnings = [];
|
|
40
|
+
const suggestions = [];
|
|
41
|
+
// Check for gh CLI
|
|
42
|
+
if (!commandExists("gh")) {
|
|
43
|
+
warnings.push("GitHub CLI (gh) is not installed. Required for issue workflows.");
|
|
44
|
+
suggestions.push("Install from: https://cli.github.com");
|
|
45
|
+
}
|
|
46
|
+
else if (!isGhAuthenticated()) {
|
|
47
|
+
warnings.push("GitHub CLI is not authenticated.");
|
|
48
|
+
suggestions.push("Run: gh auth login");
|
|
49
|
+
}
|
|
50
|
+
// Check for jq (optional)
|
|
51
|
+
if (!commandExists("jq")) {
|
|
52
|
+
suggestions.push("Optional: Install jq for faster JSON parsing in hooks (brew install jq)");
|
|
53
|
+
}
|
|
54
|
+
return { warnings, suggestions };
|
|
55
|
+
}
|
|
10
56
|
export async function initCommand(options) {
|
|
11
57
|
console.log(chalk.green("\n🚀 Initializing Sequant...\n"));
|
|
58
|
+
// Check prerequisites and display warnings
|
|
59
|
+
const { warnings, suggestions } = checkPrerequisites();
|
|
60
|
+
if (warnings.length > 0) {
|
|
61
|
+
console.log(chalk.yellow("⚠️ Prerequisites:\n"));
|
|
62
|
+
for (const warning of warnings) {
|
|
63
|
+
console.log(chalk.yellow(` • ${warning}`));
|
|
64
|
+
}
|
|
65
|
+
for (const suggestion of suggestions.filter((s) => !s.startsWith("Optional"))) {
|
|
66
|
+
console.log(chalk.gray(` ${suggestion}`));
|
|
67
|
+
}
|
|
68
|
+
console.log();
|
|
69
|
+
}
|
|
12
70
|
// Check if already initialized
|
|
13
71
|
const configExists = await fileExists(".claude/settings.json");
|
|
14
72
|
if (configExists && !options.force) {
|
|
@@ -105,10 +163,19 @@ export async function initCommand(options) {
|
|
|
105
163
|
// Create manifest
|
|
106
164
|
console.log(chalk.blue("📋 Creating manifest..."));
|
|
107
165
|
await createManifest(stack);
|
|
166
|
+
// Build optional suggestions section
|
|
167
|
+
const optionalSuggestions = suggestions.filter((s) => s.startsWith("Optional"));
|
|
168
|
+
const optionalSection = optionalSuggestions.length > 0
|
|
169
|
+
? `\n${chalk.bold("Optional improvements:")}\n${optionalSuggestions.map((s) => ` • ${s.replace("Optional: ", "")}`).join("\n")}\n`
|
|
170
|
+
: "";
|
|
171
|
+
// Build prerequisites reminder if there were warnings
|
|
172
|
+
const prereqReminder = warnings.length > 0
|
|
173
|
+
? `\n${chalk.yellow("⚠️ Remember to address prerequisites above before using issue workflows.")}\n`
|
|
174
|
+
: "";
|
|
108
175
|
// Success message
|
|
109
176
|
console.log(chalk.green(`
|
|
110
177
|
✅ Sequant initialized successfully!
|
|
111
|
-
|
|
178
|
+
${prereqReminder}
|
|
112
179
|
${chalk.bold("Next steps:")}
|
|
113
180
|
1. Review .claude/memory/constitution.md and customize for your project
|
|
114
181
|
2. Start using workflow commands in Claude Code:
|
|
@@ -116,7 +183,7 @@ ${chalk.bold("Next steps:")}
|
|
|
116
183
|
${chalk.cyan("/spec 123")} - Plan implementation for issue #123
|
|
117
184
|
${chalk.cyan("/exec 123")} - Implement the feature
|
|
118
185
|
${chalk.cyan("/qa 123")} - Quality review
|
|
119
|
-
|
|
186
|
+
${optionalSection}
|
|
120
187
|
${chalk.bold("Documentation:")}
|
|
121
188
|
https://github.com/admarble/sequant#readme
|
|
122
189
|
`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../../src/commands/init.test.ts"],"names":[],"mappings":""}
|