specweave 3.0.22 → 3.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/.claude-plugin/marketplace.json +2 -2
- package/README.md +31 -16
- package/bin/specweave.js +35 -0
- package/dist/src/cli/commands/create-increment.js +1 -1
- package/dist/src/cli/commands/create-increment.js.map +1 -1
- package/dist/src/cli/commands/glossary.d.ts +16 -0
- package/dist/src/cli/commands/glossary.d.ts.map +1 -0
- package/dist/src/cli/commands/glossary.js +55 -0
- package/dist/src/cli/commands/glossary.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +7 -6
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/jev-helpers.d.ts.map +1 -1
- package/dist/src/cli/commands/jev-helpers.js +5 -10
- package/dist/src/cli/commands/jev-helpers.js.map +1 -1
- package/dist/src/cli/commands/project.d.ts.map +1 -1
- package/dist/src/cli/commands/project.js +4 -2
- package/dist/src/cli/commands/project.js.map +1 -1
- package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
- package/dist/src/cli/commands/refresh-plugins.js +7 -1
- package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
- package/dist/src/cli/commands/review.d.ts +24 -0
- package/dist/src/cli/commands/review.d.ts.map +1 -0
- package/dist/src/cli/commands/review.js +124 -0
- package/dist/src/cli/commands/review.js.map +1 -0
- package/dist/src/cli/commands/skills.d.ts +18 -0
- package/dist/src/cli/commands/skills.d.ts.map +1 -0
- package/dist/src/cli/commands/skills.js +130 -0
- package/dist/src/cli/commands/skills.js.map +1 -0
- package/dist/src/cli/commands/update.d.ts.map +1 -1
- package/dist/src/cli/commands/update.js +10 -3
- package/dist/src/cli/commands/update.js.map +1 -1
- package/dist/src/cli/helpers/init/instruction-file-writer.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/instruction-file-writer.js +4 -3
- package/dist/src/cli/helpers/init/instruction-file-writer.js.map +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.js +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
- package/dist/src/core/config/types.d.ts +39 -6
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js +2 -0
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/glossary/check.d.ts +44 -0
- package/dist/src/core/glossary/check.d.ts.map +1 -0
- package/dist/src/core/glossary/check.js +203 -0
- package/dist/src/core/glossary/check.js.map +1 -0
- package/dist/src/core/glossary/parse.d.ts +40 -0
- package/dist/src/core/glossary/parse.d.ts.map +1 -0
- package/dist/src/core/glossary/parse.js +112 -0
- package/dist/src/core/glossary/parse.js.map +1 -0
- package/dist/src/core/hooks/handlers/stop.js +1 -1
- package/dist/src/core/hooks/handlers/stop.js.map +1 -1
- package/dist/src/core/increment/template-creator.js +1 -1
- package/dist/src/core/increment/template-creator.js.map +1 -1
- package/dist/src/core/review/brief.d.ts +46 -0
- package/dist/src/core/review/brief.d.ts.map +1 -0
- package/dist/src/core/review/brief.js +151 -0
- package/dist/src/core/review/brief.js.map +1 -0
- package/dist/src/core/review/reviewer.d.ts +62 -0
- package/dist/src/core/review/reviewer.d.ts.map +1 -0
- package/dist/src/core/review/reviewer.js +166 -0
- package/dist/src/core/review/reviewer.js.map +1 -0
- package/dist/src/core/skills/catalog.d.ts +49 -0
- package/dist/src/core/skills/catalog.d.ts.map +1 -0
- package/dist/src/core/skills/catalog.js +95 -0
- package/dist/src/core/skills/catalog.js.map +1 -0
- package/dist/src/core/skills/legacy-skill-hashes.d.ts +11 -0
- package/dist/src/core/skills/legacy-skill-hashes.d.ts.map +1 -0
- package/dist/src/core/skills/legacy-skill-hashes.js +83 -0
- package/dist/src/core/skills/legacy-skill-hashes.js.map +1 -0
- package/dist/src/core/skills/project-skills.d.ts +58 -16
- package/dist/src/core/skills/project-skills.d.ts.map +1 -1
- package/dist/src/core/skills/project-skills.js +169 -32
- package/dist/src/core/skills/project-skills.js.map +1 -1
- package/dist/src/core/tasks/closure-gate.d.ts +2 -1
- package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
- package/dist/src/core/tasks/closure-gate.js +36 -4
- package/dist/src/core/tasks/closure-gate.js.map +1 -1
- package/package.json +2 -1
- package/plugins/PLUGINS-INDEX.md +14 -12
- package/plugins/specweave/.claude-plugin/plugin.json +2 -2
- package/plugins/specweave/PLUGIN.md +24 -16
- package/plugins/specweave/marketplace.json +57 -38
- package/plugins/specweave/skills/auto/SKILL.md +8 -38
- package/plugins/specweave/skills/auto/agents/openai.yaml +5 -0
- package/plugins/specweave/skills/do/SKILL.md +46 -10
- package/plugins/specweave/skills/done/SKILL.md +6 -3
- package/plugins/specweave/skills/increment/SKILL.md +20 -11
- package/plugins/specweave/skills/review/SKILL.md +23 -4
- package/plugins/specweave/skills-catalog.json +32 -0
- package/plugins/specweave/skills-optional/glossary/SKILL.md +90 -0
- package/plugins/specweave/skills-optional/glossary/references/credits.md +33 -0
- package/plugins/specweave/skills-optional/grill-me/SKILL.md +99 -0
- package/plugins/specweave/{skills/brainstorm → skills-optional/grill-me}/references/credits.md +3 -3
- package/src/templates/AGENTS.md.template +7 -1
- package/plugins/specweave/skills/brainstorm/SKILL.md +0 -100
- package/plugins/specweave/skills/team/SKILL.md +0 -70
- /package/plugins/specweave/{skills → skills-optional}/jev/SKILL.md +0 -0
- /package/plugins/specweave/{skills → skills-optional}/project/SKILL.md +0 -0
- /package/plugins/specweave/{skills → skills-optional}/sync/SKILL.md +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 of every file SpecWeave 3.0.0 to 3.0.23 installed into `.claude/skills/sw-<name>/` and
|
|
3
|
+
* `.agents/skills/sw-<name>/` (the project form of each plugin skill file, at every
|
|
4
|
+
* 3.0.x tag). Those versions wrote no install manifest, so a folder whose every file
|
|
5
|
+
* is listed here is SpecWeave's unmodified copy; anything else is the user's.
|
|
6
|
+
* Generated once from the release tags; 3.1 and later record a manifest instead.
|
|
7
|
+
*
|
|
8
|
+
* @module core/skills/legacy-skill-hashes
|
|
9
|
+
*/
|
|
10
|
+
export const LEGACY_SKILL_HASHES = {
|
|
11
|
+
auto: {
|
|
12
|
+
'SKILL.md': [
|
|
13
|
+
'49992bd0df4c0c22839294ef592f622e566904b39add3746cad82b04e44d4384',
|
|
14
|
+
'52dd05b2c0ce79e031901fe3e33236f6c048c5a1c55f60b6249c29e7eb812b5c',
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
brainstorm: {
|
|
18
|
+
'SKILL.md': [
|
|
19
|
+
'336ee144201a850254cccef8ab7581a10017ccde4211618eb32c5e9060857fbd',
|
|
20
|
+
'fa70e9ecf859b24014a0de42fd866e8078f2777b241b4ea1d3268715d4bef273',
|
|
21
|
+
],
|
|
22
|
+
'references/credits.md': [
|
|
23
|
+
'1b242664dd3764db5f5549dc33b01016658b8464140c765ada62683f2c020f8f',
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
do: {
|
|
27
|
+
'SKILL.md': [
|
|
28
|
+
'8ffcc20df2c167941fee13a27a955fe73358d85e3f61740307b7aea8f87f48d5',
|
|
29
|
+
'a53d47d1acb834653a61ecfd49150252e973f56eb38aba814fb2f5dd5419592c',
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
done: {
|
|
33
|
+
'SKILL.md': [
|
|
34
|
+
'79d657717035cf0a5aaba6c221ba7efe14f4b13c69ad9c0e69dd4f9d20c6e995',
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
handoff: {
|
|
38
|
+
'SKILL.md': [
|
|
39
|
+
'0b1ed137dca176c066a2157ee7b590d91e6a1f8a9f9e3331f5ccb19df3de23b0',
|
|
40
|
+
'44cb707de587a69f356a714da0386add7052db75dd394b79aac6ab690f3f08a1',
|
|
41
|
+
'4745a333b22e06f714561c8f594985ace26fa4ce88f4ee1cf5e07b32163ee73e',
|
|
42
|
+
'54498e7842cb4892f7742a4a62b473eb0411c0653444d5833250c4bf4abec093',
|
|
43
|
+
'807d8db53317bffb1f89aa9aaf85dcd65d9e166bb00b400382dfd28bb01af566',
|
|
44
|
+
'be7c199efefae385abac0121367f39969373a6d1c9af7bcb3df6048e1f026d2d',
|
|
45
|
+
'ec6ef3e21fed4be38aae37ea702680cd503eb3abc4d70c60f2b489fffb4d0320',
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
increment: {
|
|
49
|
+
'SKILL.md': [
|
|
50
|
+
'1ae7d50cfc733df5144a8c8a414758e8fa1c586fa60dd3a6c7ce668b6788cfe6',
|
|
51
|
+
'52acee9e475c171aac02148adf26ddfe6b1c30c6e3fc8bee6eb64a93278178cb',
|
|
52
|
+
'd8bd25aa978f0f4737b66292da0061bcceafa8c9b5008c6921243d5ebad92201',
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
jev: {
|
|
56
|
+
'SKILL.md': [
|
|
57
|
+
'64b89a36f9c40b32dd3ed8155b3136d4bb3ad5f46e2c5aa41cd7979af00c30bb',
|
|
58
|
+
'ecceb1a592ad003810f984ae991a5f4e9e226c4212ae771507eebdb4b6c3272f',
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
project: {
|
|
62
|
+
'SKILL.md': [
|
|
63
|
+
'4c4a569cb5b440ef9a8af9324446a8b162ec1fe200e7ed46762c9a0cb4bb0b12',
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
review: {
|
|
67
|
+
'SKILL.md': [
|
|
68
|
+
'4ea6d9b3c0b4d271a3de864a765e02b998363a246930ab8418afe351aee2d5c0',
|
|
69
|
+
'7ce84b4b2106151d3f0d486cfc3079d8e9a60da74694ea8cfbc7f6b5796d830c',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
sync: {
|
|
73
|
+
'SKILL.md': [
|
|
74
|
+
'5fb4394e2a55aa36b379ef2b0533439d7e13583e411ae6c269c9312ebc39b64e',
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
team: {
|
|
78
|
+
'SKILL.md': [
|
|
79
|
+
'fda8a4ce74db12c343e27e036d54428553f639295d1ebb9f0c3b8c6ec5475709',
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=legacy-skill-hashes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-skill-hashes.js","sourceRoot":"","sources":["../../../../src/core/skills/legacy-skill-hashes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAA0E;IACxG,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;SACnE;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;SACnE;QACD,uBAAuB,EAAE;YACvB,kEAAkE;SACnE;KACF;IACD,EAAE,EAAE;QACF,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;SACnE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,kEAAkE;SACnE;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;SACnE;KACF;IACD,SAAS,EAAE;QACT,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;SACnE;KACF;IACD,GAAG,EAAE;QACH,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;SACnE;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE;YACV,kEAAkE;SACnE;KACF;IACD,MAAM,EAAE;QACN,UAAU,EAAE;YACV,kEAAkE;YAClE,kEAAkE;SACnE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,kEAAkE;SACnE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,kEAAkE;SACnE;KACF;CACF,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Project skills: the
|
|
3
|
-
*
|
|
2
|
+
* Project skills: the SpecWeave skills a project has turned on (the core ones
|
|
3
|
+
* plus any enabled or detected optional ones, see ./catalog.ts), namespaced as
|
|
4
|
+
* `sw-<name>`, in both places AI tools look for them:
|
|
4
5
|
*
|
|
5
6
|
* .claude/skills/sw-<name>/ Claude Code, including cloud sessions where
|
|
6
7
|
* plugins do not load
|
|
@@ -13,14 +14,15 @@
|
|
|
13
14
|
* frontmatter `name:` (tools that require it get `sw-<name>`) and the removal
|
|
14
15
|
* of the "generated" marker line.
|
|
15
16
|
*
|
|
16
|
-
* `
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* `installProjectSkills` also removes the copies of optional skills that are now
|
|
18
|
+
* off. `removeLegacySkillCopies` deletes the unnamespaced copies (`do`, `review`,
|
|
19
|
+
* ...) that SpecWeave 2.x put into those folders and the retired `sw-<name>`
|
|
20
|
+
* folders, only when their content identifies them as SpecWeave's own.
|
|
19
21
|
*
|
|
20
22
|
* @module core/skills/project-skills
|
|
21
23
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
import { LEGACY_SKILL_HASHES } from './legacy-skill-hashes.js';
|
|
25
|
+
import { type SkillCatalog, type SkillState } from './catalog.js';
|
|
24
26
|
/** Where the project copies go, relative to the project root. */
|
|
25
27
|
export declare const PROJECT_SKILL_DIRS: readonly [".claude/skills", ".agents/skills"];
|
|
26
28
|
/**
|
|
@@ -29,15 +31,24 @@ export declare const PROJECT_SKILL_DIRS: readonly [".claude/skills", ".agents/sk
|
|
|
29
31
|
*/
|
|
30
32
|
export declare const LEGACY_SKILL_NAMES: readonly ["auto", "brainstorm", "do", "done", "handoff", "increment", "jev", "project", "qa", "review", "sync", "team"];
|
|
31
33
|
/**
|
|
32
|
-
* Skills SpecWeave once installed as `sw-<name>` and no longer ships
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
34
|
+
* Skills SpecWeave once installed as `sw-<name>` and no longer ships; the same
|
|
35
|
+
* list as the catalog's `retired` (a test keeps them equal). Only these names are
|
|
36
|
+
* candidates; any other `sw-*` folder belongs to the user.
|
|
37
|
+
* qa 2.x Codex adapter wrote every plugin skill as `.agents/skills/sw-<name>`; qa was dropped in 3.0
|
|
38
|
+
* task standalone `skills/sw-task` (vskill-installable, 2.0.0 to 2.3.0), folded into sw-do in 3.0
|
|
39
|
+
* brainstorm its Decide step became sw-increment's and sw-grill-me's (3.1)
|
|
40
|
+
* team folded into sw-do's "Parallel lanes" (3.1)
|
|
36
41
|
*/
|
|
37
|
-
export declare const RETIRED_SKILL_NAMES: readonly ["qa", "task"];
|
|
42
|
+
export declare const RETIRED_SKILL_NAMES: readonly ["qa", "task", "brainstorm", "team"];
|
|
38
43
|
export declare function projectSkillName(name: string): string;
|
|
39
44
|
/** Project copy of a plugin SKILL.md: `name: sw-<name>` first, no generated marker. */
|
|
40
45
|
export declare function toProjectSkill(pluginContent: string, name: string): string;
|
|
46
|
+
/** The catalog shipped next to a plugin skills folder (`plugins/specweave/skills-catalog.json`). */
|
|
47
|
+
export declare function catalogFor(sourceDir: string): SkillCatalog;
|
|
48
|
+
/** Every catalog skill and whether this project has it on. */
|
|
49
|
+
export declare function projectSkillStates(projectRoot: string, options?: {
|
|
50
|
+
sourceDir?: string;
|
|
51
|
+
}): SkillState[];
|
|
41
52
|
/** The plugin skills folder shipped with this package (`plugins/specweave/skills`). */
|
|
42
53
|
export declare function defaultPluginSkillsDir(): string;
|
|
43
54
|
export interface InstallProjectSkillsOptions {
|
|
@@ -53,21 +64,52 @@ export interface InstallProjectSkillsResult {
|
|
|
53
64
|
unchanged: string[];
|
|
54
65
|
/** Project-relative files removed from an `sw-<name>` folder because the skill no longer ships them. */
|
|
55
66
|
removed: string[];
|
|
67
|
+
/** Skills installed (short names, catalog order). */
|
|
68
|
+
installed: string[];
|
|
69
|
+
/** Project-relative `sw-<name>` folders removed because that optional skill is now off. */
|
|
70
|
+
removedSkills: string[];
|
|
71
|
+
/** Folders of optional skills that are off but were left alone: changed by hand, or not SpecWeave's copy. */
|
|
72
|
+
keptSkills: string[];
|
|
56
73
|
}
|
|
57
|
-
/**
|
|
74
|
+
/** File SpecWeave writes into every `sw-<name>` folder it installs: the skill and each file's SHA-256. */
|
|
75
|
+
export declare const INSTALL_MANIFEST = ".specweave-install.json";
|
|
76
|
+
/**
|
|
77
|
+
* Who a `sw-<name>` folder belongs to.
|
|
78
|
+
* absent nothing there
|
|
79
|
+
* pristine SpecWeave's copy, unchanged: every file matches its install manifest,
|
|
80
|
+
* or (3.0.x wrote no manifest) is a file some 3.0.x release installed
|
|
81
|
+
* edited SpecWeave's manifest is there but a file was changed, added or removed
|
|
82
|
+
* foreign anything else: the user's own skill, a vskill install, a symlink
|
|
83
|
+
*/
|
|
84
|
+
export type SkillFolderOwner = 'absent' | 'pristine' | 'edited' | 'foreign';
|
|
85
|
+
export declare function skillFolderOwner(dir: string, name: string, legacy?: Readonly<Record<string, Readonly<Record<string, readonly string[]>>>>): SkillFolderOwner;
|
|
86
|
+
/**
|
|
87
|
+
* Install the project's skills as `sw-<name>` into `.claude/skills/` and
|
|
88
|
+
* `.agents/skills/`: every core skill, plus each optional skill that
|
|
89
|
+
* `.specweave/config.json` enables or the project's files detect.
|
|
90
|
+
*
|
|
91
|
+
* Core folders are SpecWeave's and always rewritten. An optional skill is written
|
|
92
|
+
* only into an empty place or SpecWeave's unchanged copy, and an optional skill
|
|
93
|
+
* that is off is removed only when its folder is SpecWeave's unchanged copy;
|
|
94
|
+
* everything else is left alone and listed in `keptSkills`.
|
|
95
|
+
*/
|
|
58
96
|
export declare function installProjectSkills(projectRoot: string, options?: InstallProjectSkillsOptions): InstallProjectSkillsResult;
|
|
59
97
|
/**
|
|
60
98
|
* True when a legacy skill folder is a copy SpecWeave installed: only SKILL.md
|
|
61
|
-
* (plus team's old agents/*.md
|
|
62
|
-
* names a `sw:` skill. A user's own
|
|
99
|
+
* (plus team's old agents/*.md and brainstorm's references/credits.md), and the
|
|
100
|
+
* SKILL.md drives the specweave CLI or names a `sw:` skill. A user's own
|
|
101
|
+
* `review` skill is left alone.
|
|
63
102
|
*/
|
|
64
103
|
export declare function isSpecweaveOwnedCopy(dir: string, name: string): boolean;
|
|
65
104
|
/**
|
|
66
105
|
* Remove SpecWeave's own stale skill copies from `.claude/skills/` and
|
|
67
106
|
* `.agents/skills/`: the unnamespaced 2.x folders and the `sw-<name>` folders
|
|
68
|
-
* of RETIRED_SKILL_NAMES.
|
|
107
|
+
* of RETIRED_SKILL_NAMES. A retired skill 3.0 shipped (team, brainstorm) is
|
|
108
|
+
* removed only when every file is one a 3.0.x release installed; 2.x leftovers
|
|
109
|
+
* (qa, task) are recognised by their content. Skips a symlinked skills folder.
|
|
69
110
|
*/
|
|
70
111
|
export declare function removeLegacySkillCopies(projectRoot: string, options?: {
|
|
71
112
|
dryRun?: boolean;
|
|
113
|
+
legacyHashes?: typeof LEGACY_SKILL_HASHES;
|
|
72
114
|
}): string[];
|
|
73
115
|
//# sourceMappingURL=project-skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-skills.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/project-skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"project-skills.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/project-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAmC,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnG,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,+CAAgD,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yHAGrB,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAIjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1E;AAED,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAE1D;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,EAAE,CAE1G;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,IAAI,MAAM,CAU/C;AAkCD,MAAM,WAAW,2BAA2B;IAC1C,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,uEAAuE;IACvE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wGAAwG;IACxG,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,2FAA2F;IAC3F,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,6GAA6G;IAC7G,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,0GAA0G;AAC1G,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAyB1D;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5E,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAuB,GAClG,gBAAgB,CAiClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CAsE5B;AAqBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAevE;AAgBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAA;CAAO,GAC5E,MAAM,EAAE,CA2BV"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Project skills: the
|
|
3
|
-
*
|
|
2
|
+
* Project skills: the SpecWeave skills a project has turned on (the core ones
|
|
3
|
+
* plus any enabled or detected optional ones, see ./catalog.ts), namespaced as
|
|
4
|
+
* `sw-<name>`, in both places AI tools look for them:
|
|
4
5
|
*
|
|
5
6
|
* .claude/skills/sw-<name>/ Claude Code, including cloud sessions where
|
|
6
7
|
* plugins do not load
|
|
@@ -13,20 +14,19 @@
|
|
|
13
14
|
* frontmatter `name:` (tools that require it get `sw-<name>`) and the removal
|
|
14
15
|
* of the "generated" marker line.
|
|
15
16
|
*
|
|
16
|
-
* `
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* `installProjectSkills` also removes the copies of optional skills that are now
|
|
18
|
+
* off. `removeLegacySkillCopies` deletes the unnamespaced copies (`do`, `review`,
|
|
19
|
+
* ...) that SpecWeave 2.x put into those folders and the retired `sw-<name>`
|
|
20
|
+
* folders, only when their content identifies them as SpecWeave's own.
|
|
19
21
|
*
|
|
20
22
|
* @module core/skills/project-skills
|
|
21
23
|
*/
|
|
22
24
|
import * as fs from 'fs';
|
|
23
25
|
import * as path from 'path';
|
|
24
26
|
import { fileURLToPath } from 'url';
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
'sync', 'handoff', 'project', 'brainstorm', 'jev',
|
|
29
|
-
];
|
|
27
|
+
import { createHash } from 'crypto';
|
|
28
|
+
import { LEGACY_SKILL_HASHES } from './legacy-skill-hashes.js';
|
|
29
|
+
import { readSkillCatalog, resolveSkills } from './catalog.js';
|
|
30
30
|
/** Where the project copies go, relative to the project root. */
|
|
31
31
|
export const PROJECT_SKILL_DIRS = ['.claude/skills', '.agents/skills'];
|
|
32
32
|
/**
|
|
@@ -38,12 +38,15 @@ export const LEGACY_SKILL_NAMES = [
|
|
|
38
38
|
'jev', 'project', 'qa', 'review', 'sync', 'team',
|
|
39
39
|
];
|
|
40
40
|
/**
|
|
41
|
-
* Skills SpecWeave once installed as `sw-<name>` and no longer ships
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
41
|
+
* Skills SpecWeave once installed as `sw-<name>` and no longer ships; the same
|
|
42
|
+
* list as the catalog's `retired` (a test keeps them equal). Only these names are
|
|
43
|
+
* candidates; any other `sw-*` folder belongs to the user.
|
|
44
|
+
* qa 2.x Codex adapter wrote every plugin skill as `.agents/skills/sw-<name>`; qa was dropped in 3.0
|
|
45
|
+
* task standalone `skills/sw-task` (vskill-installable, 2.0.0 to 2.3.0), folded into sw-do in 3.0
|
|
46
|
+
* brainstorm its Decide step became sw-increment's and sw-grill-me's (3.1)
|
|
47
|
+
* team folded into sw-do's "Parallel lanes" (3.1)
|
|
45
48
|
*/
|
|
46
|
-
export const RETIRED_SKILL_NAMES = ['qa', 'task'];
|
|
49
|
+
export const RETIRED_SKILL_NAMES = ['qa', 'task', 'brainstorm', 'team'];
|
|
47
50
|
const GENERATED_MARKER = /^<!-- Generated from skills\/sw-[a-z-]+\/SKILL\.md[^\n]*-->\n/m;
|
|
48
51
|
export function projectSkillName(name) {
|
|
49
52
|
return `sw-${name}`;
|
|
@@ -58,6 +61,14 @@ export function toProjectSkill(pluginContent, name) {
|
|
|
58
61
|
const body = fm[1].split('\n').filter((line) => !/^name\s*:/.test(line)).join('\n');
|
|
59
62
|
return `---\nname: ${skillName}\n${body}\n---\n${text.slice(fm[0].length)}`;
|
|
60
63
|
}
|
|
64
|
+
/** The catalog shipped next to a plugin skills folder (`plugins/specweave/skills-catalog.json`). */
|
|
65
|
+
export function catalogFor(sourceDir) {
|
|
66
|
+
return readSkillCatalog(path.dirname(sourceDir));
|
|
67
|
+
}
|
|
68
|
+
/** Every catalog skill and whether this project has it on. */
|
|
69
|
+
export function projectSkillStates(projectRoot, options = {}) {
|
|
70
|
+
return resolveSkills(path.resolve(projectRoot), catalogFor(options.sourceDir ?? defaultPluginSkillsDir()));
|
|
71
|
+
}
|
|
61
72
|
/** The plugin skills folder shipped with this package (`plugins/specweave/skills`). */
|
|
62
73
|
export function defaultPluginSkillsDir() {
|
|
63
74
|
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -108,31 +119,127 @@ function listFiles(dir, prefix = '') {
|
|
|
108
119
|
}
|
|
109
120
|
return out.sort();
|
|
110
121
|
}
|
|
111
|
-
/**
|
|
122
|
+
/** File SpecWeave writes into every `sw-<name>` folder it installs: the skill and each file's SHA-256. */
|
|
123
|
+
export const INSTALL_MANIFEST = '.specweave-install.json';
|
|
124
|
+
const sha256 = (bytes) => createHash('sha256').update(bytes).digest('hex');
|
|
125
|
+
/**
|
|
126
|
+
* Every entry under `dir` that is not a folder (posix-relative, sorted), never
|
|
127
|
+
* following a symlink. `regular` is false for symlinks, FIFOs, sockets and devices,
|
|
128
|
+
* which are never read.
|
|
129
|
+
*/
|
|
130
|
+
function listEntries(dir, prefix = '') {
|
|
131
|
+
const out = [];
|
|
132
|
+
let entries;
|
|
133
|
+
try {
|
|
134
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
for (const e of entries) {
|
|
140
|
+
const rel = prefix ? `${prefix}/${e.name}` : e.name;
|
|
141
|
+
if (e.isDirectory())
|
|
142
|
+
out.push(...listEntries(path.join(dir, e.name), rel));
|
|
143
|
+
else
|
|
144
|
+
out.push({ rel, regular: e.isFile() });
|
|
145
|
+
}
|
|
146
|
+
return out.sort((a, b) => a.rel.localeCompare(b.rel));
|
|
147
|
+
}
|
|
148
|
+
export function skillFolderOwner(dir, name, legacy = LEGACY_SKILL_HASHES) {
|
|
149
|
+
let stat;
|
|
150
|
+
try {
|
|
151
|
+
stat = fs.lstatSync(dir);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return 'absent';
|
|
155
|
+
}
|
|
156
|
+
if (!stat.isDirectory())
|
|
157
|
+
return 'foreign';
|
|
158
|
+
const entries = listEntries(dir);
|
|
159
|
+
const manifestFile = path.join(dir, INSTALL_MANIFEST);
|
|
160
|
+
let manifest;
|
|
161
|
+
if (entries.some((e) => e.rel === INSTALL_MANIFEST && e.regular)) {
|
|
162
|
+
try {
|
|
163
|
+
manifest = JSON.parse(fs.readFileSync(manifestFile, 'utf8'));
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return 'foreign';
|
|
167
|
+
}
|
|
168
|
+
if (manifest?.skill !== name || !manifest.files || typeof manifest.files !== 'object')
|
|
169
|
+
return 'foreign';
|
|
170
|
+
}
|
|
171
|
+
const files = entries.filter((e) => e.rel !== INSTALL_MANIFEST || !e.regular);
|
|
172
|
+
const special = files.some((e) => !e.regular);
|
|
173
|
+
if (manifest) {
|
|
174
|
+
const recorded = manifest.files;
|
|
175
|
+
const same = !special &&
|
|
176
|
+
files.length === Object.keys(recorded).length &&
|
|
177
|
+
files.every((e) => recorded[e.rel] === sha256(fs.readFileSync(path.join(dir, e.rel))));
|
|
178
|
+
return same ? 'pristine' : 'edited';
|
|
179
|
+
}
|
|
180
|
+
const known = legacy[name];
|
|
181
|
+
if (!known || !files.length || special)
|
|
182
|
+
return 'foreign';
|
|
183
|
+
const pristine = files.every((e) => (known[e.rel] ?? []).includes(sha256(fs.readFileSync(path.join(dir, e.rel)))));
|
|
184
|
+
return pristine ? 'pristine' : 'foreign';
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Install the project's skills as `sw-<name>` into `.claude/skills/` and
|
|
188
|
+
* `.agents/skills/`: every core skill, plus each optional skill that
|
|
189
|
+
* `.specweave/config.json` enables or the project's files detect.
|
|
190
|
+
*
|
|
191
|
+
* Core folders are SpecWeave's and always rewritten. An optional skill is written
|
|
192
|
+
* only into an empty place or SpecWeave's unchanged copy, and an optional skill
|
|
193
|
+
* that is off is removed only when its folder is SpecWeave's unchanged copy;
|
|
194
|
+
* everything else is left alone and listed in `keptSkills`.
|
|
195
|
+
*/
|
|
112
196
|
export function installProjectSkills(projectRoot, options = {}) {
|
|
113
197
|
const root = path.resolve(projectRoot);
|
|
114
198
|
const sourceDir = options.sourceDir ?? defaultPluginSkillsDir();
|
|
115
|
-
const
|
|
199
|
+
const optionalDir = path.join(path.dirname(sourceDir), 'skills-optional');
|
|
200
|
+
const states = resolveSkills(root, catalogFor(sourceDir));
|
|
201
|
+
const result = { written: [], unchanged: [], removed: [], installed: [], removedSkills: [], keptSkills: [] };
|
|
116
202
|
// Plan everything before touching the disk.
|
|
117
203
|
const plan = [];
|
|
118
204
|
const owned = [];
|
|
119
|
-
for (const
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
throw new Error(`Skill source missing: ${path.join(src, 'SKILL.md')}`);
|
|
205
|
+
for (const state of states.filter((s) => s.on)) {
|
|
206
|
+
const name = state.name;
|
|
207
|
+
result.installed.push(name);
|
|
208
|
+
const files = shippedCopy(state.tier === 'core' ? sourceDir : optionalDir, name);
|
|
124
209
|
for (const base of PROJECT_SKILL_DIRS) {
|
|
125
210
|
const skillDir = path.posix.join(base, projectSkillName(name));
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
211
|
+
if (state.tier === 'optional' && !hasSymlinkSegment(root, base)) {
|
|
212
|
+
const owner = skillFolderOwner(path.join(root, skillDir), name);
|
|
213
|
+
if (owner === 'edited' || owner === 'foreign') {
|
|
214
|
+
result.keptSkills.push(skillDir);
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
131
217
|
}
|
|
218
|
+
owned.push(skillDir);
|
|
219
|
+
for (const [file, bytes] of files)
|
|
220
|
+
plan.push({ rel: path.posix.join(skillDir, file), bytes });
|
|
132
221
|
}
|
|
133
222
|
}
|
|
134
223
|
for (const { rel } of plan)
|
|
135
224
|
assertNoSymlink(root, rel);
|
|
225
|
+
// Optional skills that are off: remove only SpecWeave's unchanged copy.
|
|
226
|
+
for (const state of states.filter((s) => !s.on)) {
|
|
227
|
+
for (const base of PROJECT_SKILL_DIRS) {
|
|
228
|
+
const rel = path.posix.join(base, projectSkillName(state.name));
|
|
229
|
+
if (hasSymlinkSegment(root, base))
|
|
230
|
+
continue;
|
|
231
|
+
const owner = skillFolderOwner(path.join(root, rel), state.name);
|
|
232
|
+
if (owner === 'absent')
|
|
233
|
+
continue;
|
|
234
|
+
if (owner !== 'pristine') {
|
|
235
|
+
result.keptSkills.push(rel);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
result.removedSkills.push(rel);
|
|
239
|
+
if (!options.dryRun)
|
|
240
|
+
fs.rmSync(path.join(root, rel), { recursive: true, force: true });
|
|
241
|
+
}
|
|
242
|
+
}
|
|
136
243
|
const planned = new Set(plan.map((p) => p.rel));
|
|
137
244
|
for (const skillDir of owned) {
|
|
138
245
|
for (const file of listFiles(path.join(root, skillDir))) {
|
|
@@ -144,6 +251,11 @@ export function installProjectSkills(projectRoot, options = {}) {
|
|
|
144
251
|
fs.rmSync(path.join(root, rel), { force: true });
|
|
145
252
|
}
|
|
146
253
|
}
|
|
254
|
+
for (const { rel } of plan) {
|
|
255
|
+
const stat = fs.lstatSync(path.join(root, rel), { throwIfNoEntry: false });
|
|
256
|
+
if (stat && !stat.isFile())
|
|
257
|
+
throw new Error(`Refusing to write a skill file over something that is not a file: ${path.join(root, rel)}`);
|
|
258
|
+
}
|
|
147
259
|
for (const { rel, bytes } of plan) {
|
|
148
260
|
const dest = path.join(root, rel);
|
|
149
261
|
if (fs.existsSync(dest) && fs.readFileSync(dest).equals(bytes)) {
|
|
@@ -158,16 +270,37 @@ export function installProjectSkills(projectRoot, options = {}) {
|
|
|
158
270
|
}
|
|
159
271
|
return result;
|
|
160
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* The files a skill installs (posix-relative path → bytes): its SKILL.md in project
|
|
275
|
+
* form, the rest as shipped, and the install manifest recording their hashes.
|
|
276
|
+
*/
|
|
277
|
+
function shippedCopy(skillsDir, name) {
|
|
278
|
+
const src = path.join(skillsDir, name);
|
|
279
|
+
const files = listFiles(src);
|
|
280
|
+
if (!files.includes('SKILL.md'))
|
|
281
|
+
throw new Error(`Skill source missing: ${path.join(src, 'SKILL.md')}`);
|
|
282
|
+
const out = new Map();
|
|
283
|
+
for (const file of files) {
|
|
284
|
+
const raw = fs.readFileSync(path.join(src, file));
|
|
285
|
+
out.set(file.split(path.sep).join('/'), file === 'SKILL.md' ? Buffer.from(toProjectSkill(raw.toString('utf8'), name), 'utf8') : raw);
|
|
286
|
+
}
|
|
287
|
+
const hashes = {};
|
|
288
|
+
for (const [file, bytes] of [...out].sort(([a], [b]) => a.localeCompare(b)))
|
|
289
|
+
hashes[file] = sha256(bytes);
|
|
290
|
+
out.set(INSTALL_MANIFEST, Buffer.from(JSON.stringify({ skill: name, files: hashes }, null, 2) + '\n', 'utf8'));
|
|
291
|
+
return out;
|
|
292
|
+
}
|
|
161
293
|
/**
|
|
162
294
|
* True when a legacy skill folder is a copy SpecWeave installed: only SKILL.md
|
|
163
|
-
* (plus team's old agents/*.md
|
|
164
|
-
* names a `sw:` skill. A user's own
|
|
295
|
+
* (plus team's old agents/*.md and brainstorm's references/credits.md), and the
|
|
296
|
+
* SKILL.md drives the specweave CLI or names a `sw:` skill. A user's own
|
|
297
|
+
* `review` skill is left alone.
|
|
165
298
|
*/
|
|
166
299
|
export function isSpecweaveOwnedCopy(dir, name) {
|
|
167
300
|
const files = listFiles(dir).map((f) => f.split(path.sep).join('/'));
|
|
168
301
|
if (!files.includes('SKILL.md'))
|
|
169
302
|
return false;
|
|
170
|
-
const extraAllowed = (f) => name === 'team' && /^agents\/[\w-]+\.md$/.test(f);
|
|
303
|
+
const extraAllowed = (f) => (name === 'team' && /^agents\/[\w-]+\.md$/.test(f)) || (name === 'brainstorm' && f === 'references/credits.md');
|
|
171
304
|
if (files.some((f) => f !== 'SKILL.md' && !extraAllowed(f)))
|
|
172
305
|
return false;
|
|
173
306
|
let content;
|
|
@@ -199,9 +332,12 @@ function hasSymlinkSegment(root, rel) {
|
|
|
199
332
|
/**
|
|
200
333
|
* Remove SpecWeave's own stale skill copies from `.claude/skills/` and
|
|
201
334
|
* `.agents/skills/`: the unnamespaced 2.x folders and the `sw-<name>` folders
|
|
202
|
-
* of RETIRED_SKILL_NAMES.
|
|
335
|
+
* of RETIRED_SKILL_NAMES. A retired skill 3.0 shipped (team, brainstorm) is
|
|
336
|
+
* removed only when every file is one a 3.0.x release installed; 2.x leftovers
|
|
337
|
+
* (qa, task) are recognised by their content. Skips a symlinked skills folder.
|
|
203
338
|
*/
|
|
204
339
|
export function removeLegacySkillCopies(projectRoot, options = {}) {
|
|
340
|
+
const legacy = options.legacyHashes ?? LEGACY_SKILL_HASHES;
|
|
205
341
|
const root = path.resolve(projectRoot);
|
|
206
342
|
const removed = [];
|
|
207
343
|
for (const base of PROJECT_SKILL_DIRS) {
|
|
@@ -223,7 +359,8 @@ export function removeLegacySkillCopies(projectRoot, options = {}) {
|
|
|
223
359
|
catch {
|
|
224
360
|
continue;
|
|
225
361
|
}
|
|
226
|
-
|
|
362
|
+
const shippedIn3 = folder.startsWith('sw-') && legacy[name] !== undefined;
|
|
363
|
+
if (shippedIn3 ? skillFolderOwner(dir, name, legacy) !== 'pristine' : !isSpecweaveOwnedCopy(dir, name))
|
|
227
364
|
continue;
|
|
228
365
|
removed.push(rel);
|
|
229
366
|
if (!options.dryRun)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-skills.js","sourceRoot":"","sources":["../../../../src/core/skills/project-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,uFAAuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IACnD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK;CACzC,CAAC;AAEX,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAU,CAAC;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW;IAC1D,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CACxC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC;AAE3D,MAAM,gBAAgB,GAAG,gEAAgE,CAAC;AAE1F,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,aAAqB,EAAE,IAAY;IAChE,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAClG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE;QAAE,OAAO,cAAc,SAAS,UAAU,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,cAAc,SAAS,KAAK,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB;IACpC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AAClF,CAAC;AAED,qFAAqF;AACrF,SAAS,eAAe,CAAC,IAAY,EAAE,GAAW;IAChD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACpE,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAkBD,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,UAAuC,EAAE;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,sBAAsB,EAAE,CAAC;IAChE,MAAM,MAAM,GAA+B,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEvF,4CAA4C;IAC5C,MAAM,IAAI,GAA0C,EAAE,CAAC;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACxG,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1G,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI;QAAE,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM;YAAE,SAAS;QAC7B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,sGAAsG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvI,MAAM,UAAU,GAAG,oFAAoF,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtH,OAAO,SAAS,IAAI,UAAU,CAAC;AACjC,CAAC;AAED,mFAAmF;AACnF,SAAS,iBAAiB,CAAC,IAAY,EAAE,GAAW;IAClD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB,EAAE,UAAgC,EAAE;IAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,4EAA4E;QAC5E,0CAA0C;QAC1C,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QAC5C,MAAM,UAAU,GAA4B;YAC1C,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnE,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;SACvF,CAAC;QACF,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;oBAAE,SAAS;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC;gBAAE,SAAS;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"project-skills.js","sourceRoot":"","sources":["../../../../src/core/skills/project-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* The ONLY blocking check: `reports/verify.json` must exist with `ok: true`,
|
|
5
5
|
* unless the caller supplies `--reason` (stored as metadata.closeReason).
|
|
6
6
|
* Grill / code-review / judge-llm / rubric reports are optional evidence and
|
|
7
|
-
* never block. A missing
|
|
7
|
+
* never block. A missing review, or a `fix first` verdict in the newest one,
|
|
8
|
+
* produces a one-line notice.
|
|
8
9
|
*
|
|
9
10
|
* @module core/tasks/closure-gate
|
|
10
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closure-gate.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/closure-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"closure-gate.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/closure-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,CAgD7H"}
|