guild-agents 1.3.0 → 1.4.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 (38) hide show
  1. package/README.md +16 -0
  2. package/bin/guild.js +46 -0
  3. package/package.json +1 -1
  4. package/src/commands/eval.js +225 -0
  5. package/src/commands/stats.js +147 -0
  6. package/src/templates/skills/build-feature/evals/triggers.json +16 -0
  7. package/src/templates/skills/council/evals/triggers.json +16 -0
  8. package/src/templates/skills/create-pr/evals/evals.json +44 -0
  9. package/src/templates/skills/create-pr/evals/triggers.json +16 -0
  10. package/src/templates/skills/debug/SKILL.md +1 -1
  11. package/src/templates/skills/debug/evals/triggers.json +16 -0
  12. package/src/templates/skills/dev-flow/evals/evals.json +36 -0
  13. package/src/templates/skills/dev-flow/evals/triggers.json +16 -0
  14. package/src/templates/skills/guild-specialize/evals/evals.json +54 -0
  15. package/src/templates/skills/guild-specialize/evals/triggers.json +16 -0
  16. package/src/templates/skills/new-feature/evals/evals.json +41 -0
  17. package/src/templates/skills/new-feature/evals/triggers.json +16 -0
  18. package/src/templates/skills/qa-cycle/evals/evals.json +46 -0
  19. package/src/templates/skills/qa-cycle/evals/triggers.json +16 -0
  20. package/src/templates/skills/re-specialize/evals/evals.json +48 -0
  21. package/src/templates/skills/re-specialize/evals/triggers.json +16 -0
  22. package/src/templates/skills/review/evals/evals.json +43 -0
  23. package/src/templates/skills/review/evals/triggers.json +16 -0
  24. package/src/templates/skills/session-end/evals/evals.json +40 -0
  25. package/src/templates/skills/session-end/evals/triggers.json +16 -0
  26. package/src/templates/skills/session-start/evals/evals.json +50 -0
  27. package/src/templates/skills/session-start/evals/triggers.json +16 -0
  28. package/src/templates/skills/status/evals/evals.json +40 -0
  29. package/src/templates/skills/status/evals/triggers.json +16 -0
  30. package/src/templates/skills/tdd/evals/triggers.json +16 -0
  31. package/src/templates/skills/verify/evals/triggers.json +16 -0
  32. package/src/utils/accounting.js +139 -0
  33. package/src/utils/benchmark.js +128 -0
  34. package/src/utils/description-analyzer.js +92 -0
  35. package/src/utils/pricing.js +28 -0
  36. package/src/utils/semantic-matcher.js +91 -0
  37. package/src/utils/trigger-matcher.js +64 -0
  38. package/src/utils/trigger-runner.js +132 -0
@@ -0,0 +1,54 @@
1
+ {
2
+ "skill": "guild-specialize",
3
+ "evals": [
4
+ {
5
+ "id": "gs-has-core-steps",
6
+ "description": "Guild specialize has read, explore, enrich, specialize, confirm, commit steps",
7
+ "expectations": [
8
+ { "text": "Has read-base step", "assertion": "step-exists:read-base" },
9
+ { "text": "Has explore-project step", "assertion": "step-exists:explore-project" },
10
+ { "text": "Has enrich-claude-md step", "assertion": "step-exists:enrich-claude-md" },
11
+ { "text": "Has specialize-agents step", "assertion": "step-exists:specialize-agents" },
12
+ { "text": "Has confirm step", "assertion": "step-exists:confirm" },
13
+ { "text": "Has commit-enrichment step", "assertion": "step-exists:commit-enrichment" }
14
+ ]
15
+ },
16
+ {
17
+ "id": "gs-enrichment-uses-reasoning",
18
+ "description": "CLAUDE.md enrichment uses reasoning tier (opus)",
19
+ "expectations": [
20
+ { "text": "enrich-claude-md uses reasoning", "assertion": "step-model-tier:enrich-claude-md:reasoning" }
21
+ ]
22
+ },
23
+ {
24
+ "id": "gs-agents-use-execution",
25
+ "description": "Agent specialization uses execution tier (sonnet)",
26
+ "expectations": [
27
+ { "text": "specialize-agents uses execution", "assertion": "step-model-tier:specialize-agents:execution" }
28
+ ]
29
+ },
30
+ {
31
+ "id": "gs-gates",
32
+ "description": "Gates at exploration and confirmation",
33
+ "expectations": [
34
+ { "text": "explore-project has gate", "assertion": "gate-exists:explore-project" },
35
+ { "text": "confirm has gate", "assertion": "gate-exists:confirm" }
36
+ ]
37
+ },
38
+ {
39
+ "id": "gs-tech-lead-role",
40
+ "description": "Enrichment and specialization use tech-lead role",
41
+ "expectations": [
42
+ { "text": "enrich-claude-md is tech-lead", "assertion": "step-role:enrich-claude-md:tech-lead" },
43
+ { "text": "specialize-agents is tech-lead", "assertion": "step-role:specialize-agents:tech-lead" }
44
+ ]
45
+ },
46
+ {
47
+ "id": "gs-minimum-steps",
48
+ "description": "Has at least 6 steps",
49
+ "expectations": [
50
+ { "text": "At least 6 steps", "assertion": "step-count:6" }
51
+ ]
52
+ }
53
+ ]
54
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "guild-specialize",
3
+ "matcherType": "keyword",
4
+ "description": "Enriches CLAUDE.md by exploring the project and specializes agents to the real stack",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "specialize the agents for this project", "shouldTrigger": true },
8
+ { "prompt": "enrich CLAUDE.md with the project stack", "shouldTrigger": true },
9
+ { "prompt": "explore the project and specialize agents", "shouldTrigger": true },
10
+ { "prompt": "set up Guild for this codebase", "shouldTrigger": true, "keywordExpected": false },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "review my code", "shouldTrigger": false },
13
+ { "prompt": "debug this bug", "shouldTrigger": false },
14
+ { "prompt": "save my session", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "skill": "new-feature",
3
+ "evals": [
4
+ {
5
+ "id": "nf-has-core-steps",
6
+ "description": "New feature has name, branch, session, confirm steps",
7
+ "expectations": [
8
+ { "text": "Has get-name step", "assertion": "step-exists:get-name" },
9
+ { "text": "Has create-branch step", "assertion": "step-exists:create-branch" },
10
+ { "text": "Has update-session step", "assertion": "step-exists:update-session" },
11
+ { "text": "Has confirm step", "assertion": "step-exists:confirm" }
12
+ ]
13
+ },
14
+ {
15
+ "id": "nf-optional-issue",
16
+ "description": "GitHub issue creation step exists",
17
+ "expectations": [
18
+ { "text": "Has create-issue step", "assertion": "step-exists:create-issue" }
19
+ ]
20
+ },
21
+ {
22
+ "id": "nf-gates",
23
+ "description": "Gates at name input, session update, and confirmation",
24
+ "expectations": [
25
+ { "text": "get-name has gate", "assertion": "gate-exists:get-name" },
26
+ { "text": "update-session has gate", "assertion": "gate-exists:update-session" },
27
+ { "text": "confirm has gate", "assertion": "gate-exists:confirm" }
28
+ ]
29
+ },
30
+ {
31
+ "id": "nf-all-system",
32
+ "description": "All steps are system role",
33
+ "expectations": [
34
+ { "text": "get-name is system", "assertion": "step-role:get-name:system" },
35
+ { "text": "create-branch is system", "assertion": "step-role:create-branch:system" },
36
+ { "text": "update-session is system", "assertion": "step-role:update-session:system" },
37
+ { "text": "confirm is system", "assertion": "step-role:confirm:system" }
38
+ ]
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "new-feature",
3
+ "matcherType": "keyword",
4
+ "description": "Creates branch and scaffold for a new feature",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "create a new feature branch", "shouldTrigger": true },
8
+ { "prompt": "scaffold a new feature", "shouldTrigger": true },
9
+ { "prompt": "start a new feature called user-auth", "shouldTrigger": true },
10
+ { "prompt": "prepare the branch for a new feature", "shouldTrigger": true },
11
+ { "prompt": "review my code", "shouldTrigger": false },
12
+ { "prompt": "create a pull request", "shouldTrigger": false },
13
+ { "prompt": "debug this bug", "shouldTrigger": false },
14
+ { "prompt": "save my session", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "skill": "qa-cycle",
3
+ "evals": [
4
+ {
5
+ "id": "qa-has-core-steps",
6
+ "description": "QA cycle has pre-gate, validate, bugfix, post-gate steps",
7
+ "expectations": [
8
+ { "text": "Has gate-pre-qa step", "assertion": "step-exists:gate-pre-qa" },
9
+ { "text": "Has qa-validate step", "assertion": "step-exists:qa-validate" },
10
+ { "text": "Has bugfix step", "assertion": "step-exists:bugfix" },
11
+ { "text": "Has gate-post-qa step", "assertion": "step-exists:gate-post-qa" }
12
+ ]
13
+ },
14
+ {
15
+ "id": "qa-agent-roles",
16
+ "description": "QA and bugfix steps use correct agent roles",
17
+ "expectations": [
18
+ { "text": "qa-validate uses qa role", "assertion": "step-role:qa-validate:qa" },
19
+ { "text": "bugfix uses bugfix role", "assertion": "step-role:bugfix:bugfix" }
20
+ ]
21
+ },
22
+ {
23
+ "id": "qa-execution-tier",
24
+ "description": "QA and bugfix use execution tier (sonnet)",
25
+ "expectations": [
26
+ { "text": "qa-validate uses execution", "assertion": "step-model-tier:qa-validate:execution" },
27
+ { "text": "bugfix uses execution", "assertion": "step-model-tier:bugfix:execution" }
28
+ ]
29
+ },
30
+ {
31
+ "id": "qa-gates",
32
+ "description": "Pre and post QA gates exist",
33
+ "expectations": [
34
+ { "text": "gate-pre-qa has gate", "assertion": "gate-exists:gate-pre-qa" },
35
+ { "text": "gate-post-qa has gate", "assertion": "gate-exists:gate-post-qa" }
36
+ ]
37
+ },
38
+ {
39
+ "id": "qa-bugfix-requires-report",
40
+ "description": "Bugfix step requires QA report",
41
+ "expectations": [
42
+ { "text": "bugfix requires qa-report", "assertion": "step-requires:bugfix:qa-report" }
43
+ ]
44
+ }
45
+ ]
46
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "qa-cycle",
3
+ "matcherType": "keyword",
4
+ "description": "QA + bugfix cycle until it passes",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "run a QA cycle on this", "shouldTrigger": true },
8
+ { "prompt": "QA and bugfix until it passes", "shouldTrigger": true },
9
+ { "prompt": "validate with QA cycle", "shouldTrigger": true },
10
+ { "prompt": "check if my implementation is correct", "shouldTrigger": true, "keywordExpected": false },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "review my code", "shouldTrigger": false },
13
+ { "prompt": "save my session", "shouldTrigger": false },
14
+ { "prompt": "start a new feature", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "skill": "re-specialize",
3
+ "evals": [
4
+ {
5
+ "id": "rs-has-core-steps",
6
+ "description": "Re-specialize has read, explore, check-zones, regenerate, update, confirm, commit steps",
7
+ "expectations": [
8
+ { "text": "Has read-current step", "assertion": "step-exists:read-current" },
9
+ { "text": "Has explore-project step", "assertion": "step-exists:explore-project" },
10
+ { "text": "Has check-zones step", "assertion": "step-exists:check-zones" },
11
+ { "text": "Has regenerate-zones step", "assertion": "step-exists:regenerate-zones" },
12
+ { "text": "Has update-agents step", "assertion": "step-exists:update-agents" },
13
+ { "text": "Has confirm step", "assertion": "step-exists:confirm" },
14
+ { "text": "Has commit step", "assertion": "step-exists:commit" }
15
+ ]
16
+ },
17
+ {
18
+ "id": "rs-reasoning-for-regeneration",
19
+ "description": "Zone regeneration uses reasoning tier (opus)",
20
+ "expectations": [
21
+ { "text": "regenerate-zones uses reasoning", "assertion": "step-model-tier:regenerate-zones:reasoning" }
22
+ ]
23
+ },
24
+ {
25
+ "id": "rs-execution-for-agents",
26
+ "description": "Agent updates use execution tier (sonnet)",
27
+ "expectations": [
28
+ { "text": "update-agents uses execution", "assertion": "step-model-tier:update-agents:execution" }
29
+ ]
30
+ },
31
+ {
32
+ "id": "rs-gates",
33
+ "description": "Gates at exploration, zone check, and confirmation",
34
+ "expectations": [
35
+ { "text": "explore-project has gate", "assertion": "gate-exists:explore-project" },
36
+ { "text": "check-zones has gate", "assertion": "gate-exists:check-zones" },
37
+ { "text": "confirm has gate", "assertion": "gate-exists:confirm" }
38
+ ]
39
+ },
40
+ {
41
+ "id": "rs-minimum-steps",
42
+ "description": "Has at least 7 steps",
43
+ "expectations": [
44
+ { "text": "At least 7 steps", "assertion": "step-count:7" }
45
+ ]
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "re-specialize",
3
+ "matcherType": "keyword",
4
+ "description": "Incremental re-specialization — re-scans the project and updates only auto-generated zones in CLAUDE.md and agents",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "run incremental re-specialization", "shouldTrigger": true },
8
+ { "prompt": "re-scan the project and update CLAUDE.md zones", "shouldTrigger": true },
9
+ { "prompt": "update the auto-generated zones in agents", "shouldTrigger": true },
10
+ { "prompt": "my stack changed, update the agents", "shouldTrigger": true, "keywordExpected": false },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "review my code", "shouldTrigger": false },
13
+ { "prompt": "debug this bug", "shouldTrigger": false },
14
+ { "prompt": "save my session", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "skill": "review",
3
+ "evals": [
4
+ {
5
+ "id": "rv-has-core-steps",
6
+ "description": "Review has gather-diff, review, and present steps",
7
+ "expectations": [
8
+ { "text": "Has gather-diff step", "assertion": "step-exists:gather-diff" },
9
+ { "text": "Has review step", "assertion": "step-exists:review" },
10
+ { "text": "Has present step", "assertion": "step-exists:present" }
11
+ ]
12
+ },
13
+ {
14
+ "id": "rv-reviewer-role",
15
+ "description": "Review step uses code-reviewer role",
16
+ "expectations": [
17
+ { "text": "review uses code-reviewer role", "assertion": "step-role:review:code-reviewer" }
18
+ ]
19
+ },
20
+ {
21
+ "id": "rv-reasoning-tier",
22
+ "description": "Code review uses reasoning tier (opus)",
23
+ "expectations": [
24
+ { "text": "review uses reasoning tier", "assertion": "step-model-tier:review:reasoning" }
25
+ ]
26
+ },
27
+ {
28
+ "id": "rv-presentation-gate",
29
+ "description": "Present step has gate for user review",
30
+ "expectations": [
31
+ { "text": "present has gate", "assertion": "gate-exists:present" }
32
+ ]
33
+ },
34
+ {
35
+ "id": "rv-dependencies",
36
+ "description": "Review requires diff content, present requires report",
37
+ "expectations": [
38
+ { "text": "review requires diff-content", "assertion": "step-requires:review:diff-content" },
39
+ { "text": "present requires review-report", "assertion": "step-requires:present:review-report" }
40
+ ]
41
+ }
42
+ ]
43
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "review",
3
+ "matcherType": "keyword",
4
+ "description": "Standalone code review on the current diff",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "review my code", "shouldTrigger": true },
8
+ { "prompt": "do a code review on the current changes", "shouldTrigger": true },
9
+ { "prompt": "check my diff for issues", "shouldTrigger": true },
10
+ { "prompt": "review the current diff", "shouldTrigger": true },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "save my session", "shouldTrigger": false },
13
+ { "prompt": "what phase am I in", "shouldTrigger": false },
14
+ { "prompt": "start a new feature", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "skill": "session-end",
3
+ "evals": [
4
+ {
5
+ "id": "se-has-core-steps",
6
+ "description": "Session end has gather, update, wip-commit, confirm steps",
7
+ "expectations": [
8
+ { "text": "Has gather-state step", "assertion": "step-exists:gather-state" },
9
+ { "text": "Has update-session step", "assertion": "step-exists:update-session" },
10
+ { "text": "Has commit-wip step", "assertion": "step-exists:commit-wip" },
11
+ { "text": "Has confirm step", "assertion": "step-exists:confirm" }
12
+ ]
13
+ },
14
+ {
15
+ "id": "se-all-system",
16
+ "description": "All steps are system role",
17
+ "expectations": [
18
+ { "text": "gather-state is system", "assertion": "step-role:gather-state:system" },
19
+ { "text": "update-session is system", "assertion": "step-role:update-session:system" },
20
+ { "text": "commit-wip is system", "assertion": "step-role:commit-wip:system" },
21
+ { "text": "confirm is system", "assertion": "step-role:confirm:system" }
22
+ ]
23
+ },
24
+ {
25
+ "id": "se-gates",
26
+ "description": "Gates at session update and confirmation",
27
+ "expectations": [
28
+ { "text": "update-session has gate", "assertion": "gate-exists:update-session" },
29
+ { "text": "confirm has gate", "assertion": "gate-exists:confirm" }
30
+ ]
31
+ },
32
+ {
33
+ "id": "se-wip-requires-files",
34
+ "description": "WIP commit requires knowledge of modified files",
35
+ "expectations": [
36
+ { "text": "commit-wip requires modified-files", "assertion": "step-requires:commit-wip:modified-files" }
37
+ ]
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "session-end",
3
+ "matcherType": "keyword",
4
+ "description": "Saves current state to SESSION.md",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "save the session state", "shouldTrigger": true },
8
+ { "prompt": "end my session and save to SESSION.md", "shouldTrigger": true },
9
+ { "prompt": "save current state to SESSION", "shouldTrigger": true },
10
+ { "prompt": "I'm done for today, save my progress", "shouldTrigger": true, "keywordExpected": false },
11
+ { "prompt": "start my session", "shouldTrigger": false },
12
+ { "prompt": "create a pull request", "shouldTrigger": false },
13
+ { "prompt": "review my code", "shouldTrigger": false },
14
+ { "prompt": "debug this bug", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "skill": "session-start",
3
+ "evals": [
4
+ {
5
+ "id": "ss-has-core-steps",
6
+ "description": "Session start has load, detect, present, suggest, update steps",
7
+ "expectations": [
8
+ { "text": "Has load-context step", "assertion": "step-exists:load-context" },
9
+ { "text": "Has detect-resumable step", "assertion": "step-exists:detect-resumable" },
10
+ { "text": "Has present-state step", "assertion": "step-exists:present-state" },
11
+ { "text": "Has suggest-continuation step", "assertion": "step-exists:suggest-continuation" },
12
+ { "text": "Has update-session step", "assertion": "step-exists:update-session" }
13
+ ]
14
+ },
15
+ {
16
+ "id": "ss-all-system",
17
+ "description": "All steps are system role",
18
+ "expectations": [
19
+ { "text": "load-context is system", "assertion": "step-role:load-context:system" },
20
+ { "text": "detect-resumable is system", "assertion": "step-role:detect-resumable:system" },
21
+ { "text": "present-state is system", "assertion": "step-role:present-state:system" },
22
+ { "text": "suggest-continuation is system", "assertion": "step-role:suggest-continuation:system" },
23
+ { "text": "update-session is system", "assertion": "step-role:update-session:system" }
24
+ ]
25
+ },
26
+ {
27
+ "id": "ss-gates",
28
+ "description": "Gates at presentation, suggestion, and session update",
29
+ "expectations": [
30
+ { "text": "present-state has gate", "assertion": "gate-exists:present-state" },
31
+ { "text": "suggest-continuation has gate", "assertion": "gate-exists:suggest-continuation" },
32
+ { "text": "update-session has gate", "assertion": "gate-exists:update-session" }
33
+ ]
34
+ },
35
+ {
36
+ "id": "ss-detect-requires-session",
37
+ "description": "Detect-resumable requires session state",
38
+ "expectations": [
39
+ { "text": "detect-resumable requires session-md", "assertion": "step-requires:detect-resumable:session-md" }
40
+ ]
41
+ },
42
+ {
43
+ "id": "ss-minimum-steps",
44
+ "description": "Has at least 5 steps",
45
+ "expectations": [
46
+ { "text": "At least 5 steps", "assertion": "step-count:5" }
47
+ ]
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "session-start",
3
+ "matcherType": "keyword",
4
+ "description": "Loads context and resumes work from SESSION.md",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "load my session context", "shouldTrigger": true },
8
+ { "prompt": "resume work from SESSION.md", "shouldTrigger": true },
9
+ { "prompt": "start session and load context", "shouldTrigger": true },
10
+ { "prompt": "where did I leave off", "shouldTrigger": true, "keywordExpected": false },
11
+ { "prompt": "save my progress", "shouldTrigger": false },
12
+ { "prompt": "create a new feature", "shouldTrigger": false },
13
+ { "prompt": "review my code", "shouldTrigger": false },
14
+ { "prompt": "run the tests", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "skill": "status",
3
+ "evals": [
4
+ {
5
+ "id": "st-has-core-steps",
6
+ "description": "Status has read-state, scan-resources, present steps",
7
+ "expectations": [
8
+ { "text": "Has read-state step", "assertion": "step-exists:read-state" },
9
+ { "text": "Has scan-resources step", "assertion": "step-exists:scan-resources" },
10
+ { "text": "Has present-status step", "assertion": "step-exists:present-status" }
11
+ ]
12
+ },
13
+ {
14
+ "id": "st-all-system",
15
+ "description": "All steps are system role",
16
+ "expectations": [
17
+ { "text": "read-state is system", "assertion": "step-role:read-state:system" },
18
+ { "text": "scan-resources is system", "assertion": "step-role:scan-resources:system" },
19
+ { "text": "present-status is system", "assertion": "step-role:present-status:system" }
20
+ ]
21
+ },
22
+ {
23
+ "id": "st-presentation-gate",
24
+ "description": "Present-status has gate",
25
+ "expectations": [
26
+ { "text": "present-status has gate", "assertion": "gate-exists:present-status" }
27
+ ]
28
+ },
29
+ {
30
+ "id": "st-dependencies",
31
+ "description": "Present-status requires project and session data",
32
+ "expectations": [
33
+ { "text": "present-status requires project-md", "assertion": "step-requires:present-status:project-md" },
34
+ { "text": "present-status requires session-md", "assertion": "step-requires:present-status:session-md" },
35
+ { "text": "present-status requires agent-list", "assertion": "step-requires:present-status:agent-list" },
36
+ { "text": "present-status requires skill-list", "assertion": "step-requires:present-status:skill-list" }
37
+ ]
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "status",
3
+ "matcherType": "keyword",
4
+ "description": "Shows current project and session state",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "show the project status", "shouldTrigger": true },
8
+ { "prompt": "show current session state", "shouldTrigger": true },
9
+ { "prompt": "what is the current project state", "shouldTrigger": true },
10
+ { "prompt": "how is the project going", "shouldTrigger": true },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "review my code", "shouldTrigger": false },
13
+ { "prompt": "debug this bug", "shouldTrigger": false },
14
+ { "prompt": "save my session", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "tdd",
3
+ "matcherType": "keyword",
4
+ "description": "Discipline skill — TDD red-green-refactor cycle. Use when implementing any feature or bugfix, before writing implementation code.",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "use TDD for this implementation", "shouldTrigger": true },
8
+ { "prompt": "red green refactor cycle", "shouldTrigger": true },
9
+ { "prompt": "follow the TDD red-green-refactor discipline", "shouldTrigger": true },
10
+ { "prompt": "implement this feature with TDD", "shouldTrigger": true },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "review my code", "shouldTrigger": false },
13
+ { "prompt": "save my session", "shouldTrigger": false },
14
+ { "prompt": "show project status", "shouldTrigger": false }
15
+ ]
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "verify",
3
+ "matcherType": "keyword",
4
+ "description": "Discipline skill — verification before completion. Use when about to claim work is complete, fixed, or passing, before committing or creating PRs.",
5
+ "threshold": 0.3,
6
+ "tests": [
7
+ { "prompt": "verify before committing", "shouldTrigger": true },
8
+ { "prompt": "run verification before completion", "shouldTrigger": true },
9
+ { "prompt": "verify the work is complete", "shouldTrigger": true },
10
+ { "prompt": "make sure everything passes before the PR", "shouldTrigger": true, "keywordExpected": false },
11
+ { "prompt": "create a pull request", "shouldTrigger": false },
12
+ { "prompt": "review my code", "shouldTrigger": false },
13
+ { "prompt": "debug this bug", "shouldTrigger": false },
14
+ { "prompt": "save my session", "shouldTrigger": false }
15
+ ]
16
+ }