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
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Structured Logger for Pipeline Scripts
3
+ *
4
+ * Provides log levels with emoji prefixes for visual scanning in terminal output.
5
+ * Supports verbose mode integration with CLI arguments.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createLogger } from './lib/logger'
10
+ *
11
+ * const log = createLogger({ verbose: args.verbose })
12
+ *
13
+ * log.debug('Processing item', { id: 123 }) // Only shown in verbose mode
14
+ * log.info('Starting process')
15
+ * log.success('Completed successfully')
16
+ * log.warn('Missing optional field')
17
+ * log.error('Failed to connect', error)
18
+ * ```
19
+ */
20
+ /**
21
+ * Emoji prefixes for each log level.
22
+ */
23
+ const LOG_PREFIXES = {
24
+ debug: "🔍",
25
+ info: "ℹ️",
26
+ success: "✅",
27
+ warn: "⚠️",
28
+ error: "❌",
29
+ };
30
+ /**
31
+ * Format a log message with optional data.
32
+ *
33
+ * @param level - The log level
34
+ * @param message - The log message
35
+ * @param data - Optional data to include
36
+ * @param options - Additional formatting options
37
+ * @returns Formatted log string
38
+ */
39
+ function formatMessage(level, message, data, options) {
40
+ const parts = [];
41
+ // Add timestamp if enabled
42
+ if (options?.timestamp) {
43
+ const now = new Date().toISOString().slice(11, 19); // HH:MM:SS
44
+ parts.push(`[${now}]`);
45
+ }
46
+ // Add emoji prefix
47
+ parts.push(LOG_PREFIXES[level]);
48
+ // Add custom prefix if provided
49
+ if (options?.prefix) {
50
+ parts.push(`[${options.prefix}]`);
51
+ }
52
+ // Add message
53
+ parts.push(message);
54
+ // Add data if provided
55
+ if (data !== undefined) {
56
+ if (data instanceof Error) {
57
+ parts.push(`- ${data.message}`);
58
+ if (data.stack) {
59
+ parts.push(`\n ${data.stack.split("\n").slice(1).join("\n ")}`);
60
+ }
61
+ }
62
+ else if (typeof data === "object") {
63
+ parts.push(`- ${JSON.stringify(data)}`);
64
+ }
65
+ else {
66
+ parts.push(`- ${String(data)}`);
67
+ }
68
+ }
69
+ return parts.join(" ");
70
+ }
71
+ /**
72
+ * Create a structured logger with configurable options.
73
+ *
74
+ * @param options - Logger configuration
75
+ * @returns A Logger instance
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * // Basic usage
80
+ * const log = createLogger()
81
+ * log.info('Hello')
82
+ *
83
+ * // With verbose mode
84
+ * const verboseLog = createLogger({ verbose: true })
85
+ * verboseLog.debug('Debug info') // Now visible
86
+ *
87
+ * // With timestamps
88
+ * const timedLog = createLogger({ timestamps: true })
89
+ * timedLog.info('With time') // [12:34:56] ℹ️ With time
90
+ *
91
+ * // Child logger with prefix
92
+ * const childLog = log.child('discovery')
93
+ * childLog.info('Finding shops') // ℹ️ [discovery] Finding shops
94
+ * ```
95
+ */
96
+ export function createLogger(options = {}) {
97
+ const { verbose = false, silent = false, output = console.log, errorOutput = console.error, timestamps = false, } = options;
98
+ const createLogFunction = (prefix) => ({
99
+ debug(message, data) {
100
+ if (silent || !verbose)
101
+ return;
102
+ output(formatMessage("debug", message, data, {
103
+ prefix,
104
+ timestamp: timestamps,
105
+ }));
106
+ },
107
+ info(message, data) {
108
+ if (silent)
109
+ return;
110
+ output(formatMessage("info", message, data, { prefix, timestamp: timestamps }));
111
+ },
112
+ success(message, data) {
113
+ if (silent)
114
+ return;
115
+ output(formatMessage("success", message, data, {
116
+ prefix,
117
+ timestamp: timestamps,
118
+ }));
119
+ },
120
+ warn(message, data) {
121
+ if (silent)
122
+ return;
123
+ output(formatMessage("warn", message, data, { prefix, timestamp: timestamps }));
124
+ },
125
+ error(message, data) {
126
+ if (silent)
127
+ return;
128
+ errorOutput(formatMessage("error", message, data, {
129
+ prefix,
130
+ timestamp: timestamps,
131
+ }));
132
+ },
133
+ log(level, message, data) {
134
+ if (silent)
135
+ return;
136
+ if (level === "debug" && !verbose)
137
+ return;
138
+ const logFn = level === "error" ? errorOutput : output;
139
+ logFn(formatMessage(level, message, data, { prefix, timestamp: timestamps }));
140
+ },
141
+ child(childPrefix) {
142
+ const newPrefix = prefix ? `${prefix}:${childPrefix}` : childPrefix;
143
+ return createLogFunction(newPrefix);
144
+ },
145
+ isVerbose() {
146
+ return verbose;
147
+ },
148
+ });
149
+ return createLogFunction();
150
+ }
151
+ /**
152
+ * Default logger instance (non-verbose).
153
+ * Use `createLogger({ verbose: true })` for verbose mode.
154
+ */
155
+ export const defaultLogger = createLogger();
156
+ /**
157
+ * Quick logging functions using the default logger.
158
+ * For scripts that don't need verbose mode configuration.
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * import { log } from './lib/logger'
163
+ *
164
+ * log.info('Starting')
165
+ * log.success('Done')
166
+ * ```
167
+ */
168
+ export const log = defaultLogger;
169
+ /**
170
+ * Create a logger that logs to an array for testing.
171
+ *
172
+ * @returns Object with logger and captured messages
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const { logger, messages } = createTestLogger()
177
+ * logger.info('test')
178
+ * expect(messages).toContain(expect.stringContaining('test'))
179
+ * ```
180
+ */
181
+ export function createTestLogger(options = {}) {
182
+ const messages = [];
183
+ const errors = [];
184
+ const logger = createLogger({
185
+ ...options,
186
+ output: (msg) => messages.push(msg),
187
+ errorOutput: (msg) => errors.push(msg),
188
+ });
189
+ return { logger, messages, errors };
190
+ }
191
+ /**
192
+ * Log a step in a multi-step process.
193
+ *
194
+ * @param step - Current step number
195
+ * @param total - Total number of steps
196
+ * @param message - Step description
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * logStep(1, 3, 'Fetching data')
201
+ * // Output: ℹ️ [1/3] Fetching data
202
+ * ```
203
+ */
204
+ export function logStep(step, total, message) {
205
+ console.log(`ℹ️ [${step}/${total}] ${message}`);
206
+ }
207
+ /**
208
+ * Log a progress update within a step.
209
+ *
210
+ * @param current - Current progress
211
+ * @param total - Total items
212
+ * @param message - Progress description
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * logProgress(5, 10, 'Processing shops')
217
+ * // Output: → 5/10 Processing shops
218
+ * ```
219
+ */
220
+ export function logProgress(current, total, message) {
221
+ console.log(` → ${current}/${total} ${message}`);
222
+ }
223
+ /**
224
+ * Log a section header for visual organization.
225
+ *
226
+ * @param title - Section title
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * logSection('Discovery Results')
231
+ * // Output:
232
+ * // ════════════════════════════════════════
233
+ * // Discovery Results
234
+ * // ════════════════════════════════════════
235
+ * ```
236
+ */
237
+ export function logSection(title) {
238
+ const line = "═".repeat(40);
239
+ console.log(`\n${line}`);
240
+ console.log(title);
241
+ console.log(`${line}\n`);
242
+ }
243
+ /**
244
+ * Log a divider line.
245
+ */
246
+ export function logDivider() {
247
+ console.log("─".repeat(40));
248
+ }
249
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/lib/workflow/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Core types for workflow execution
3
+ */
4
+ /**
5
+ * Available workflow phases
6
+ */
7
+ export type Phase = "spec" | "testgen" | "exec" | "test" | "qa" | "loop";
8
+ /**
9
+ * Default phases for workflow execution
10
+ */
11
+ export declare const DEFAULT_PHASES: Phase[];
12
+ /**
13
+ * Configuration for workflow execution
14
+ */
15
+ export interface ExecutionConfig {
16
+ /** Phases to execute */
17
+ phases: Phase[];
18
+ /** Timeout per phase in seconds */
19
+ phaseTimeout: number;
20
+ /** Enable quality loop mode */
21
+ qualityLoop: boolean;
22
+ /** Max iterations for quality loop */
23
+ maxIterations: number;
24
+ /** Skip verification after exec */
25
+ skipVerification: boolean;
26
+ /** Run issues sequentially */
27
+ sequential: boolean;
28
+ /** Force parallel even with dependencies */
29
+ forceParallel: boolean;
30
+ /** Verbose output */
31
+ verbose: boolean;
32
+ /** Disable smart test detection */
33
+ noSmartTests: boolean;
34
+ /** Dry run mode - don't actually execute */
35
+ dryRun: boolean;
36
+ }
37
+ /**
38
+ * Default execution configuration
39
+ */
40
+ export declare const DEFAULT_CONFIG: ExecutionConfig;
41
+ /**
42
+ * Result of executing a single phase
43
+ */
44
+ export interface PhaseResult {
45
+ phase: Phase;
46
+ success: boolean;
47
+ durationSeconds?: number;
48
+ error?: string;
49
+ }
50
+ /**
51
+ * Result of executing all phases for an issue
52
+ */
53
+ export interface IssueResult {
54
+ issueNumber: number;
55
+ success: boolean;
56
+ phaseResults: PhaseResult[];
57
+ abortReason?: string;
58
+ loopTriggered?: boolean;
59
+ durationSeconds?: number;
60
+ }
61
+ /**
62
+ * CLI arguments for run command
63
+ */
64
+ export interface RunCommandOptions {
65
+ issues: number[];
66
+ phases?: string;
67
+ sequential?: boolean;
68
+ dryRun?: boolean;
69
+ verbose?: boolean;
70
+ timeout?: number;
71
+ maxIterations?: number;
72
+ qualityLoop?: boolean;
73
+ }
74
+ /**
75
+ * Batch of issues to run together
76
+ */
77
+ export interface IssueBatch {
78
+ batchNumber: number;
79
+ issues: number[];
80
+ }
81
+ /**
82
+ * Result of a batch execution
83
+ */
84
+ export interface BatchResult {
85
+ batchNumber: number;
86
+ issueResults: IssueResult[];
87
+ success: boolean;
88
+ }
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,EAA2B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,eAW5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Core types for workflow execution
3
+ */
4
+ /**
5
+ * Default phases for workflow execution
6
+ */
7
+ export const DEFAULT_PHASES = ["spec", "exec", "qa"];
8
+ /**
9
+ * Default execution configuration
10
+ */
11
+ export const DEFAULT_CONFIG = {
12
+ phases: DEFAULT_PHASES,
13
+ phaseTimeout: 1800,
14
+ qualityLoop: false,
15
+ maxIterations: 3,
16
+ skipVerification: false,
17
+ sequential: false,
18
+ forceParallel: false,
19
+ verbose: false,
20
+ noSmartTests: false,
21
+ dryRun: false,
22
+ };
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/workflow/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AA4B9D;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,KAAK;IACd,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,KAAK;CACd,CAAC"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "sequant",
3
+ "version": "1.0.0",
4
+ "description": "Quantize your development workflow - Sequential AI phases with quality gates",
5
+ "type": "module",
6
+ "bin": {
7
+ "sequant": "./dist/bin/cli.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "templates",
20
+ "stacks"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "dev": "tsx bin/cli.ts",
25
+ "test": "echo \"No tests yet\" && exit 0",
26
+ "lint": "echo \"No linter configured yet\" && exit 0",
27
+ "validate:skills": "for skill in templates/skills/*/; do npx skills-ref validate \"$skill\"; done",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "keywords": [
31
+ "claude",
32
+ "claude-code",
33
+ "workflow",
34
+ "ai",
35
+ "automation",
36
+ "quality",
37
+ "sequential",
38
+ "agent-skills",
39
+ "cursor",
40
+ "vscode"
41
+ ],
42
+ "author": "Sequant Contributors",
43
+ "license": "MIT",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/admarble/sequant.git"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/admarble/sequant/issues"
50
+ },
51
+ "homepage": "https://github.com/admarble/sequant#readme",
52
+ "engines": {
53
+ "node": ">=18.0.0"
54
+ },
55
+ "dependencies": {
56
+ "chalk": "^5.3.0",
57
+ "commander": "^12.1.0",
58
+ "diff": "^7.0.0",
59
+ "inquirer": "^12.3.2",
60
+ "yaml": "^2.7.0"
61
+ },
62
+ "devDependencies": {
63
+ "@types/diff": "^7.0.0",
64
+ "@types/inquirer": "^9.0.7",
65
+ "@types/node": "^22.10.5",
66
+ "tsx": "^4.19.2",
67
+ "typescript": "^5.7.2"
68
+ }
69
+ }
package/stacks/go.yaml ADDED
@@ -0,0 +1,22 @@
1
+ name: go
2
+ displayName: Go
3
+ description: Statically typed, compiled programming language
4
+
5
+ detection:
6
+ files:
7
+ - go.mod
8
+
9
+ commands:
10
+ test: go test ./...
11
+ build: go build ./...
12
+ lint: golangci-lint run
13
+ fmt: go fmt ./...
14
+
15
+ variables:
16
+ TEST_COMMAND: go test ./...
17
+ BUILD_COMMAND: go build ./...
18
+ LINT_COMMAND: golangci-lint run
19
+
20
+ patterns:
21
+ src: "**/*.go"
22
+ tests: "**/*_test.go"
@@ -0,0 +1,28 @@
1
+ name: nextjs
2
+ displayName: Next.js
3
+ description: React framework for production
4
+
5
+ detection:
6
+ files:
7
+ - next.config.js
8
+ - next.config.mjs
9
+ - next.config.ts
10
+ packageDeps:
11
+ - next
12
+
13
+ commands:
14
+ test: npm test
15
+ build: npm run build
16
+ lint: npm run lint
17
+ dev: npm run dev
18
+
19
+ variables:
20
+ TEST_COMMAND: npm test
21
+ BUILD_COMMAND: npm run build
22
+ LINT_COMMAND: npm run lint
23
+
24
+ patterns:
25
+ components: components/**/*.tsx
26
+ pages: app/**/*.tsx
27
+ api: app/api/**/*.ts
28
+ tests: __tests__/**/*.test.{ts,tsx}
@@ -0,0 +1,24 @@
1
+ name: python
2
+ displayName: Python
3
+ description: General-purpose programming language
4
+
5
+ detection:
6
+ files:
7
+ - pyproject.toml
8
+ - setup.py
9
+ - requirements.txt
10
+
11
+ commands:
12
+ test: pytest
13
+ build: python -m build
14
+ lint: ruff check .
15
+ format: ruff format .
16
+
17
+ variables:
18
+ TEST_COMMAND: pytest
19
+ BUILD_COMMAND: python -m build
20
+ LINT_COMMAND: ruff check .
21
+
22
+ patterns:
23
+ src: src/**/*.py
24
+ tests: tests/**/*.py
@@ -0,0 +1,23 @@
1
+ name: rust
2
+ displayName: Rust
3
+ description: Systems programming language
4
+
5
+ detection:
6
+ files:
7
+ - Cargo.toml
8
+
9
+ commands:
10
+ test: cargo test
11
+ build: cargo build --release
12
+ lint: cargo clippy
13
+ check: cargo check
14
+
15
+ variables:
16
+ TEST_COMMAND: cargo test
17
+ BUILD_COMMAND: cargo build --release
18
+ LINT_COMMAND: cargo clippy
19
+
20
+ patterns:
21
+ src: src/**/*.rs
22
+ tests: tests/**/*.rs
23
+ benches: benches/**/*.rs