specweave 2.1.0 → 2.2.1
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/.claude-plugin/marketplace.json +2 -2
- package/README.md +7 -6
- package/bin/specweave.js +28 -0
- package/dist/src/cli/commands/jev-helpers.d.ts +148 -0
- package/dist/src/cli/commands/jev-helpers.d.ts.map +1 -0
- package/dist/src/cli/commands/jev-helpers.js +582 -0
- package/dist/src/cli/commands/jev-helpers.js.map +1 -0
- package/dist/src/cli/commands/jev.d.ts +21 -0
- package/dist/src/cli/commands/jev.d.ts.map +1 -0
- package/dist/src/cli/commands/jev.js +350 -0
- package/dist/src/cli/commands/jev.js.map +1 -0
- package/dist/src/cli/helpers/init/instruction-file-writer.d.ts +4 -0
- package/dist/src/cli/helpers/init/instruction-file-writer.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/instruction-file-writer.js +11 -6
- package/dist/src/cli/helpers/init/instruction-file-writer.js.map +1 -1
- package/dist/src/core/auto/completion-evaluator.d.ts +22 -1
- package/dist/src/core/auto/completion-evaluator.d.ts.map +1 -1
- package/dist/src/core/auto/completion-evaluator.js +99 -9
- package/dist/src/core/auto/completion-evaluator.js.map +1 -1
- package/dist/src/core/config/types.d.ts +39 -1
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js +1 -0
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/hooks/handlers/pre-tool-use.d.ts +28 -5
- package/dist/src/core/hooks/handlers/pre-tool-use.d.ts.map +1 -1
- package/dist/src/core/hooks/handlers/pre-tool-use.js +162 -7
- package/dist/src/core/hooks/handlers/pre-tool-use.js.map +1 -1
- package/dist/src/core/jev/browse.d.ts +56 -0
- package/dist/src/core/jev/browse.d.ts.map +1 -0
- package/dist/src/core/jev/browse.js +721 -0
- package/dist/src/core/jev/browse.js.map +1 -0
- package/dist/src/core/jev/client.d.ts +134 -0
- package/dist/src/core/jev/client.d.ts.map +1 -0
- package/dist/src/core/jev/client.js +329 -0
- package/dist/src/core/jev/client.js.map +1 -0
- package/dist/src/core/jev/config.d.ts +69 -0
- package/dist/src/core/jev/config.d.ts.map +1 -0
- package/dist/src/core/jev/config.js +181 -0
- package/dist/src/core/jev/config.js.map +1 -0
- package/dist/src/core/jev/decide.d.ts +162 -0
- package/dist/src/core/jev/decide.d.ts.map +1 -0
- package/dist/src/core/jev/decide.js +333 -0
- package/dist/src/core/jev/decide.js.map +1 -0
- package/dist/src/core/jev/index.d.ts +20 -0
- package/dist/src/core/jev/index.d.ts.map +1 -0
- package/dist/src/core/jev/index.js +20 -0
- package/dist/src/core/jev/index.js.map +1 -0
- package/dist/src/core/jev/questions.d.ts +56 -0
- package/dist/src/core/jev/questions.d.ts.map +1 -0
- package/dist/src/core/jev/questions.js +159 -0
- package/dist/src/core/jev/questions.js.map +1 -0
- package/dist/src/core/jev/redact.d.ts +44 -0
- package/dist/src/core/jev/redact.d.ts.map +1 -0
- package/dist/src/core/jev/redact.js +102 -0
- package/dist/src/core/jev/redact.js.map +1 -0
- package/dist/src/core/jev/usage.d.ts +38 -0
- package/dist/src/core/jev/usage.d.ts.map +1 -0
- package/dist/src/core/jev/usage.js +70 -0
- package/dist/src/core/jev/usage.js.map +1 -0
- package/dist/src/utils/model-selection.d.ts +49 -0
- package/dist/src/utils/model-selection.d.ts.map +1 -1
- package/dist/src/utils/model-selection.js +70 -0
- package/dist/src/utils/model-selection.js.map +1 -1
- package/package.json +1 -1
- package/plugins/PLUGINS-INDEX.md +14 -4
- package/plugins/specweave/.claude-plugin/plugin.json +5 -3
- package/plugins/specweave/PLUGIN.md +16 -4
- package/plugins/specweave/hooks/run-worker.mjs +37 -2
- package/plugins/specweave/hooks/run.mjs +30 -0
- package/plugins/specweave/marketplace.json +6 -0
- package/plugins/specweave/skills/jev/SKILL.md +203 -0
- package/src/templates/AGENTS.md.template +22 -0
- package/src/templates/CLAUDE.md.template +22 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "2.1
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "Portable intent, specifications, task evidence, and handoffs across AI coding tools.",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Anton Abyzov",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"description": "SpecWeave unified plugin — increment lifecycle (plan, work the ledger, verify, review, complete), cross-tool handoff, GitHub/Jira/ADO sync",
|
|
13
13
|
"source": "./plugins/specweave",
|
|
14
14
|
"category": "development",
|
|
15
|
-
"version": "2.1
|
|
15
|
+
"version": "2.2.1",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Anton Abyzov",
|
|
18
18
|
"email": "anton.abyzov@gmail.com"
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
9
|
<a href="https://www.npmjs.com/package/specweave"><img src="https://img.shields.io/npm/v/specweave?color=brightgreen" alt="npm" /></a>
|
|
10
|
-
<img src="https://img.shields.io/badge/skills-
|
|
10
|
+
<img src="https://img.shields.io/badge/skills-11-8B5CF6" alt="11 skills" />
|
|
11
11
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT" /></a>
|
|
12
12
|
<a href="https://discord.gg/UYg4BGJ65V"><img src="https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white" alt="Discord" /></a>
|
|
13
13
|
</p>
|
|
@@ -45,9 +45,9 @@ Start with a short intent, see what is in progress, and open the linked specific
|
|
|
45
45
|
|
|
46
46
|
Everything lives in `.specweave/increments/NNNN-slug/`: `spec.md`, `tasks.md` (+ the rendered `SW:BOARD`), `ledger.jsonl`, `handoff.md`, `reports/`.
|
|
47
47
|
|
|
48
|
-
## The
|
|
48
|
+
## The eleven skills
|
|
49
49
|
|
|
50
|
-
The CLI is the product and it runs in any AI tool or in CI. These
|
|
50
|
+
The CLI is the product and it runs in any AI tool or in CI. These eleven focused skills expose the workflow to compatible coding tools. Install domain expertise separately when it helps.
|
|
51
51
|
|
|
52
52
|
| Skill | Use it for |
|
|
53
53
|
|-------|------------|
|
|
@@ -61,6 +61,7 @@ The CLI is the product and it runs in any AI tool or in CI. These ten focused sk
|
|
|
61
61
|
| `sw:done` | Verify, review check, `specweave complete`. |
|
|
62
62
|
| `sw:sync` | GitHub, Jira and Azure DevOps: push, pull, status, setup. |
|
|
63
63
|
| `sw:handoff` | A one-page, secret-scrubbed continuation doc. |
|
|
64
|
+
| `sw:jev` | Closed-set decisions in ~250 ms via Jev (TypeSafe System One). |
|
|
64
65
|
|
|
65
66
|
Five longer procedures (tdd-cycle, e2e, debug, diagrams, release-expert) live in `skills-optional/` and install on demand with [vskill](https://www.npmjs.com/package/vskill).
|
|
66
67
|
|
|
@@ -78,7 +79,7 @@ specweave update
|
|
|
78
79
|
There is no alias routing: a 1.x slug simply has no skill behind it. The old-to-new map —
|
|
79
80
|
every removed skill, the skill or CLI command that replaced it, and the ones that moved to
|
|
80
81
|
`skills-optional/` — is `removedIn2_0` in
|
|
81
|
-
[`plugins/specweave/marketplace.json`](plugins/specweave/marketplace.json).
|
|
82
|
+
[`plugins/specweave/marketplace.json`](https://github.com/anton-abyzov/specweave/blob/develop/plugins/specweave/marketplace.json).
|
|
82
83
|
|
|
83
84
|
<br/>
|
|
84
85
|
|
|
@@ -140,7 +141,7 @@ Cursor tells AI "use Tailwind." SpecWeave tells AI "build a checkout flow agains
|
|
|
140
141
|
|
|
141
142
|
**LSP Code Intelligence** — 198x faster than grep, 0 false positives. Semantic references, definitions, and types.
|
|
142
143
|
|
|
143
|
-
**
|
|
144
|
+
**11 skills, not 51** — see [The eleven skills](#the-eleven-skills) above. Plus six standalone skills for non-Claude tools.
|
|
144
145
|
|
|
145
146
|
**External Sync** — `specweave sync push|pull|status|setup`. GitHub is first-class; Jira and Azure DevOps are opt-in.
|
|
146
147
|
|
|
@@ -172,7 +173,7 @@ npx vskill eval run my-skill # Run eval suite
|
|
|
172
173
|
|
|
173
174
|
## Contributing
|
|
174
175
|
|
|
175
|
-
Inside this repo dependency install scripts are disabled (`.npmrc`): run `npm ci`, then `npm run setup` (rebuilds the allowlisted native deps), and `npm run security:scan` before pushing — see [SECURITY.md](SECURITY.md).
|
|
176
|
+
Inside this repo dependency install scripts are disabled (`.npmrc`): run `npm ci`, then `npm run setup` (rebuilds the allowlisted native deps), and `npm run security:scan` before pushing — see [SECURITY.md](https://github.com/anton-abyzov/specweave/blob/develop/SECURITY.md).
|
|
176
177
|
|
|
177
178
|
## Community
|
|
178
179
|
|
package/bin/specweave.js
CHANGED
|
@@ -448,6 +448,34 @@ program
|
|
|
448
448
|
});
|
|
449
449
|
});
|
|
450
450
|
|
|
451
|
+
// Jev command - TypeSafe System One: fast, cheap, calibrated closed-set decisions
|
|
452
|
+
program
|
|
453
|
+
.command('jev <action> [args...]')
|
|
454
|
+
.description('Jev (System One): doctor | setup | ask | route | task | guard | screen | failure | browse | usage')
|
|
455
|
+
.option('--json', 'Machine-readable JSON output')
|
|
456
|
+
.option('--provider <name>', 'setup: openrouter | typesafe')
|
|
457
|
+
.option('--model <model>', 'setup: model id (defaults to the provider default)')
|
|
458
|
+
.option('--guard-bash', 'setup: enable the opt-in PreToolUse Bash guard')
|
|
459
|
+
.option('--no-guard-bash', 'setup: disable the Bash guard')
|
|
460
|
+
.option('--disable', 'setup: turn Jev off for this project')
|
|
461
|
+
.option('--state <value>', 'ask: state as JSON, plain text, @file or - for stdin')
|
|
462
|
+
.option('--questions <value>', 'ask: questions as JSON or @file')
|
|
463
|
+
.option('--choice <instructions>', 'ask: shorthand for one choice question')
|
|
464
|
+
.option('--option <key=description>', 'ask: one --choice option (repeatable)', (val, acc) => { (acc || []).push(val); return acc || [val]; }, [])
|
|
465
|
+
.option('--noul <instructions>', 'ask: shorthand for one noul (true/false probability) question')
|
|
466
|
+
.option('--increment <id>', 'task: increment id (defaults to the active one)')
|
|
467
|
+
.option('--goal <goal>', 'browse: what to accomplish')
|
|
468
|
+
.option('--url <url>', 'browse: starting URL')
|
|
469
|
+
.option('--allow-domain <domain>', 'browse: allowed origin (repeatable)', (val, acc) => { (acc || []).push(val); return acc || [val]; }, [])
|
|
470
|
+
.option('--input <Label=value>', 'browse: text the loop may type (repeatable)', (val, acc) => { (acc || []).push(val); return acc || [val]; }, [])
|
|
471
|
+
.option('--max-steps <n>', 'browse: step limit')
|
|
472
|
+
.option('--screenshot-dir <path>', 'browse: where to write screenshots')
|
|
473
|
+
.option('--allow-sensitive', 'browse: allow clicking sensitive controls')
|
|
474
|
+
.action(async (action, args, options) => {
|
|
475
|
+
const { jevCommand } = await import('../dist/src/cli/commands/jev.js');
|
|
476
|
+
process.exitCode = await jevCommand(action, args, options);
|
|
477
|
+
});
|
|
478
|
+
|
|
451
479
|
// Next ID command - Return the next available increment number
|
|
452
480
|
program
|
|
453
481
|
.command('next-id')
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `specweave jev` — the local-environment half of the command.
|
|
3
|
+
*
|
|
4
|
+
* Argument parsing, the shipped-skill roster, `.specweave/config.json` writes, the
|
|
5
|
+
* shared exit codes and printers, and the two environment subcommands (`doctor`,
|
|
6
|
+
* `setup`). `jev.ts` keeps the dispatcher and the decision subcommands.
|
|
7
|
+
*
|
|
8
|
+
* Nothing here ever reads, prints or stores an API key VALUE — only env var NAMES.
|
|
9
|
+
*
|
|
10
|
+
* @module cli/commands/jev-helpers
|
|
11
|
+
*/
|
|
12
|
+
import { JevClient, runBrowse, type Json, type Question } from '../../core/jev/index.js';
|
|
13
|
+
/** Exit codes shared by every `specweave jev` subcommand (documented in the skill). */
|
|
14
|
+
export declare const EXIT: {
|
|
15
|
+
readonly ok: 0;
|
|
16
|
+
readonly error: 1;
|
|
17
|
+
readonly warn: 2;
|
|
18
|
+
readonly deny: 3;
|
|
19
|
+
/** Jev is disabled or has no key — agents treat this as "continue without Jev". */
|
|
20
|
+
readonly unavailable: 4;
|
|
21
|
+
};
|
|
22
|
+
/** Where the opt-in PreToolUse Bash guard marker lives. */
|
|
23
|
+
export declare function guardMarkerPath(projectRoot: string): string;
|
|
24
|
+
/** Create or remove the Bash guard marker. Returns true when the marker exists after the call. */
|
|
25
|
+
export declare function setGuardMarker(projectRoot: string, on: boolean): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Merge a patch into the `jev` section of `.specweave/config.json`, keeping every
|
|
28
|
+
* other key (and every other jev key) untouched. Returns the config path written.
|
|
29
|
+
*/
|
|
30
|
+
export declare function mergeJevConfig(projectRoot: string, patch: Record<string, unknown>): string;
|
|
31
|
+
/** The installed specweave package root (walks up from this module). */
|
|
32
|
+
export declare function packageRoot(): string;
|
|
33
|
+
export interface ProjectHookState {
|
|
34
|
+
/** Absolute path of `<projectRoot>/.claude/settings.json` (whether or not it exists). */
|
|
35
|
+
path: string;
|
|
36
|
+
present: boolean;
|
|
37
|
+
/** Set when the settings file could not be read or written; it was left untouched. */
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
/** `<projectRoot>/.claude/settings.json`. */
|
|
41
|
+
export declare function projectSettingsPath(projectRoot: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* The exact command the hook entry runs.
|
|
44
|
+
*
|
|
45
|
+
* Absolute, because `CLAUDE_PLUGIN_ROOT` is NOT set for hooks declared in
|
|
46
|
+
* settings.json — `${CLAUDE_PLUGIN_ROOT}` would expand to nothing. `run.mjs`
|
|
47
|
+
* resolves its own plugin root from `import.meta.url`, so an absolute path is
|
|
48
|
+
* all it needs.
|
|
49
|
+
*/
|
|
50
|
+
export declare function jevHookCommand(root?: string): string;
|
|
51
|
+
/** Is the Jev PreToolUse hook registered for this project right now? */
|
|
52
|
+
export declare function readProjectHook(projectRoot: string): ProjectHookState;
|
|
53
|
+
/**
|
|
54
|
+
* Register or remove the Jev Bash guard in `<projectRoot>/.claude/settings.json`.
|
|
55
|
+
*
|
|
56
|
+
* Idempotent: an entry already pointing at a `hooks/run.mjs pre-tool-use` is
|
|
57
|
+
* rewritten in place (so a moved or reinstalled package updates rather than
|
|
58
|
+
* duplicates) and never reordered. Removal takes out exactly our entries — other
|
|
59
|
+
* PreToolUse groups survive — and then deletes the empty array and keys it left
|
|
60
|
+
* behind. Every other key in the file is preserved byte-for-byte through the
|
|
61
|
+
* JSON round trip.
|
|
62
|
+
*
|
|
63
|
+
* A settings.json that is missing or malformed is never overwritten blind: a
|
|
64
|
+
* malformed file comes back as `{ error }` and is left exactly as it was.
|
|
65
|
+
*/
|
|
66
|
+
export declare function setProjectHook(projectRoot: string, on: boolean, packageDir?: string): ProjectHookState;
|
|
67
|
+
export interface SkillEntry {
|
|
68
|
+
name: string;
|
|
69
|
+
description: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Roster used when the shipped `plugins/specweave/skills/` tree cannot be read
|
|
73
|
+
* (global install layouts differ). Keeps `jev route` useful everywhere.
|
|
74
|
+
*/
|
|
75
|
+
export declare const FALLBACK_SKILLS: readonly SkillEntry[];
|
|
76
|
+
/**
|
|
77
|
+
* Shipped skill names + their frontmatter descriptions, for the SKILL_ROUTE question.
|
|
78
|
+
* Falls back to {@link FALLBACK_SKILLS} when the plugin tree is unreadable.
|
|
79
|
+
*/
|
|
80
|
+
export declare function skillRoster(root?: string): SkillEntry[];
|
|
81
|
+
export interface ReadSources {
|
|
82
|
+
cwd: string;
|
|
83
|
+
/** Injected stdin (tests); when absent stdin is read from fd 0. */
|
|
84
|
+
stdin?: string;
|
|
85
|
+
}
|
|
86
|
+
/** Read stdin synchronously. Returns '' when there is nothing to read. */
|
|
87
|
+
export declare function readStdin(src: ReadSources): string;
|
|
88
|
+
/**
|
|
89
|
+
* Resolve a `--state` / `--questions` style argument:
|
|
90
|
+
* `-` → stdin, `@path` → file contents, anything else → the literal value.
|
|
91
|
+
*/
|
|
92
|
+
export declare function readArgValue(value: string | undefined, src: ReadSources): string | undefined;
|
|
93
|
+
/** Resolve a `[file|-]` positional: missing or `-` → stdin, otherwise the file. */
|
|
94
|
+
export declare function readFileOrStdin(value: string | undefined, src: ReadSources): string;
|
|
95
|
+
/** JSON when the text parses as JSON, the plain string otherwise. */
|
|
96
|
+
export declare function parseJsonOrText(text: string): Json;
|
|
97
|
+
/** Parse a `--questions` payload into the client's question map. */
|
|
98
|
+
export declare function parseQuestions(text: string): Record<string, Question>;
|
|
99
|
+
/** Split repeatable `key=value` flags (`--option`, `--input`) into a record. */
|
|
100
|
+
export declare function parseKeyValues(list: string[] | undefined, flag: string): Record<string, string>;
|
|
101
|
+
/**
|
|
102
|
+
* Build questions from the `--choice` / `--option` / `--noul` shorthands.
|
|
103
|
+
* Returns an empty map when no shorthand was used.
|
|
104
|
+
*/
|
|
105
|
+
export declare function shorthandQuestions(opts: {
|
|
106
|
+
choice?: string;
|
|
107
|
+
option?: string[];
|
|
108
|
+
noul?: string;
|
|
109
|
+
}): Record<string, Question>;
|
|
110
|
+
/** Body of a `## <heading>` section of a markdown doc, up to the next `## `. */
|
|
111
|
+
export declare function extractSection(markdown: string, heading: string): string;
|
|
112
|
+
/** `0.0000155` → `$0.0000155`; small enough that toFixed(2) would read as $0.00. */
|
|
113
|
+
export declare function formatCost(cost: number): string;
|
|
114
|
+
/** `{a: 0.91, b: 0.09}` → `a 0.91 · b 0.09`, highest first, top 5. */
|
|
115
|
+
export declare function formatProbabilities(probabilities: Record<string, number>): string;
|
|
116
|
+
export interface JevCommandOptions {
|
|
117
|
+
json?: boolean;
|
|
118
|
+
provider?: string;
|
|
119
|
+
model?: string;
|
|
120
|
+
guardBash?: boolean;
|
|
121
|
+
disable?: boolean;
|
|
122
|
+
state?: string;
|
|
123
|
+
questions?: string;
|
|
124
|
+
choice?: string;
|
|
125
|
+
option?: string[];
|
|
126
|
+
noul?: string;
|
|
127
|
+
increment?: string;
|
|
128
|
+
goal?: string;
|
|
129
|
+
url?: string;
|
|
130
|
+
allowDomain?: string[];
|
|
131
|
+
input?: string[];
|
|
132
|
+
maxSteps?: string | number;
|
|
133
|
+
screenshotDir?: string;
|
|
134
|
+
allowSensitive?: boolean;
|
|
135
|
+
cwd?: string;
|
|
136
|
+
env?: NodeJS.ProcessEnv;
|
|
137
|
+
fetch?: typeof fetch;
|
|
138
|
+
client?: JevClient;
|
|
139
|
+
stdin?: string;
|
|
140
|
+
browse?: typeof runBrowse;
|
|
141
|
+
}
|
|
142
|
+
export declare const out: (s: string) => void;
|
|
143
|
+
export declare const err: (s: string) => void;
|
|
144
|
+
export declare const json: (value: unknown) => void;
|
|
145
|
+
export declare function messageOf(error: unknown): string;
|
|
146
|
+
export declare function jevDoctor(root: string, env: NodeJS.ProcessEnv, opts: JevCommandOptions): Promise<number>;
|
|
147
|
+
export declare function jevSetup(root: string, env: NodeJS.ProcessEnv, opts: JevCommandOptions): Promise<number>;
|
|
148
|
+
//# sourceMappingURL=jev-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jev-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/jev-helpers.ts"],"names":[],"mappings":"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"}
|