cadet-agent 0.15.4 โ 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -2
- package/package.json +35 -35
- package/src/upgrades.mjs +7 -10
package/README.md
CHANGED
|
@@ -6,8 +6,12 @@ Cadet-Agent is **not a one-shot code generator**. It won't spit out a finished g
|
|
|
6
6
|
|
|
7
7
|
## Repository Layout
|
|
8
8
|
- `.cadet/agent/core/` contains the shared Cadet-Agent framework documents.
|
|
9
|
+
- `cadet-agent.md` is the thin global directive: identity, non-negotiable rules, workflow routing, hard-gate protocol, and skill dispatch.
|
|
10
|
+
- `skills/` contains scoped workflow-phase skills (Requirements, Architecture, Spike, StoryBreakdown, TDD, Debugging, CodeReview).
|
|
11
|
+
- `templates/` contains runtime templates for planning artifacts.
|
|
9
12
|
- `.cadet/agent/docs/` contains setup guides for each supported IDE.
|
|
10
13
|
- `.github/agents/` contains the Copilot custom agent definitions (Cadet Agent + Cadet Agent Reviewer).
|
|
14
|
+
- `.github/prompts/` contains Copilot slash-command skill prompts (`/cadet-review`, `/cadet-tdd`, etc.).
|
|
11
15
|
- `.cursor/` contains Cursor-specific authored files.
|
|
12
16
|
- `.continue/` contains Continue-specific authored files.
|
|
13
17
|
- `.claude/` contains Claude Code-specific authored files.
|
|
@@ -53,18 +57,92 @@ Expand-Archive .\cadet-agent.zip -DestinationPath . -Force
|
|
|
53
57
|
- For framework navigation after install, see `.cadet/agent/core/README.md`.
|
|
54
58
|
- IDE setup guides and full documentation are at the [canonical repository](https://github.com/naishtech/cadet-agent) (GitHub Pages).
|
|
55
59
|
|
|
60
|
+
## Workflow
|
|
61
|
+
|
|
62
|
+
Cadet-Agent follows a structured SDLC with hard gates between phases. The workflow path adapts to change size: **large** changes go through the full pipeline, **small** changes skip planning artifacts, and **no_test_required** changes (docs, config) skip TDD.
|
|
63
|
+
|
|
64
|
+
```mermaid
|
|
65
|
+
flowchart TD
|
|
66
|
+
START(["๐ User starts session"])
|
|
67
|
+
RESUME{"state.json<br/>exists?"}
|
|
68
|
+
INIT["Initialize state.json<br/>phase: context-resolution"]
|
|
69
|
+
REPORT["Report current phase,<br/>epics, stories & gates"]
|
|
70
|
+
CR["๐ Context Resolution<br/>classify change size,<br/>calibrate learner,<br/>detect policy"]
|
|
71
|
+
REQ["๐ Requirements<br/>Given/When/Then criteria<br/>assumption audit"]
|
|
72
|
+
ARCH["๐๏ธ Architecture<br/>technical design,<br/>ADR decisions"]
|
|
73
|
+
SPIKE["๐งช Spikes<br/>resolve unverified<br/>assumptions"]
|
|
74
|
+
BREAKDOWN["๐ Story Breakdown<br/>epics โ testable stories"]
|
|
75
|
+
IMPL["๐จ Implementation<br/>TDD per story,<br/>red โ green โ refactor"]
|
|
76
|
+
REVIEW["โ
Review<br/>hard gate: 17-step<br/>code review, security"]
|
|
77
|
+
VALIDATE["โ๏ธ Validation<br/>acceptance criteria,<br/>design artifact sync"]
|
|
78
|
+
CLOSED(["๐ Closed"])
|
|
79
|
+
NEXT_STORY{"More stories<br/>in epic?"}
|
|
80
|
+
|
|
81
|
+
START --> RESUME
|
|
82
|
+
RESUME -->|"no"| INIT --> CR
|
|
83
|
+
RESUME -->|"yes"| REPORT --> CR
|
|
84
|
+
|
|
85
|
+
CR -->|"large change"| REQ
|
|
86
|
+
CR -->|"small / no_test_required"| IMPL
|
|
87
|
+
|
|
88
|
+
REQ --> ARCH
|
|
89
|
+
ARCH -->|"unverified assumptions"| SPIKE
|
|
90
|
+
ARCH -->|"all assumptions resolved"| BREAKDOWN
|
|
91
|
+
SPIKE -->|"spike complete"| ARCH
|
|
92
|
+
|
|
93
|
+
BREAKDOWN --> IMPL
|
|
94
|
+
|
|
95
|
+
IMPL -->|"story complete"| REVIEW
|
|
96
|
+
REVIEW -->|"gate: codeReviewCompleted โ
<br/>gate: securityReviewPassed โ
"| VALIDATE
|
|
97
|
+
VALIDATE -->|"gate: designArtifactSyncConfirmed โ
"| NEXT_STORY
|
|
98
|
+
NEXT_STORY -->|"yes"| IMPL
|
|
99
|
+
NEXT_STORY -->|"no"| CLOSED
|
|
100
|
+
|
|
101
|
+
style START fill:#4a9,stroke:#333,color:#fff
|
|
102
|
+
style CLOSED fill:#4a9,stroke:#333,color:#fff
|
|
103
|
+
style RESUME fill:#e8a840,stroke:#333,color:#000
|
|
104
|
+
style REVIEW fill:#e87440,stroke:#333,color:#fff
|
|
105
|
+
style VALIDATE fill:#e87440,stroke:#333,color:#fff
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Resuming a Session
|
|
109
|
+
|
|
110
|
+
Use the `/cadet-resume` slash command to pick up where you left off. It reads `.cadet/state.json` and reports the current phase, epic/story progress, and outstanding gates โ then dispatches the right skill for the next step. If no state file exists, it initializes a fresh session from `context-resolution`.
|
|
111
|
+
|
|
112
|
+
### Phase Gating
|
|
113
|
+
|
|
114
|
+
Hard gates are enforced at every phase transition. The agent reads `.cadet/state.json โ gates` before advancing and **blocks** the transition if any required gate is `false`. Gates cannot be skipped without an explicit user-directed exception recorded in `changeHistory`.
|
|
115
|
+
|
|
116
|
+
| Transition | Required Gates |
|
|
117
|
+
|---|---|
|
|
118
|
+
| implementation โ review | `testsPassed`, `compileCheckConfirmed`, `unityAnalyzerClean`, `storyTrackingUpdated` |
|
|
119
|
+
| review โ validation | `codeReviewCompleted`, `securityReviewPassed`, `acceptanceCriteriaValidated` |
|
|
120
|
+
| validation โ closed | `designArtifactSyncConfirmed` |
|
|
121
|
+
|
|
56
122
|
## Examples
|
|
57
123
|
|
|
58
124
|
### GitHub Copilot
|
|
59
125
|
Run `npx cadet-agent@latest init` in your Unity project root, then open the repo in VS Code.
|
|
60
126
|
|
|
61
|
-
**Agent mode:** Select the **Cadet Agent** agent from the agent picker in Copilot Chat. The agent definition at `.github/agents/cadet.agent.md`
|
|
127
|
+
**Agent mode:** Select the **Cadet Agent** agent from the agent picker in Copilot Chat. The agent definition at `.github/agents/cadet.agent.md` loads the thin directive in `.cadet/agent/core/cadet-agent.md` and dispatches scoped skills.
|
|
62
128
|
|
|
63
129
|
```text
|
|
64
130
|
[Describe your game dev task...]
|
|
65
131
|
```
|
|
66
132
|
|
|
67
|
-
Cadet Agent will
|
|
133
|
+
Cadet Agent will classify the change, check `.cadet/state.json` for blocking gates, and invoke the appropriate skill.
|
|
134
|
+
|
|
135
|
+
**Skill mode:** For a specific workflow phase, use the matching slash command so the skill becomes the primary instruction context:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
/cadet-requirements
|
|
139
|
+
create a requirements doc for a kart handling prototype
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
/cadet-review
|
|
144
|
+
review the PR at https://github.com/... or review story-1 in epic-1-player-movement
|
|
145
|
+
```
|
|
68
146
|
|
|
69
147
|
**Review mode:** After the Cadet Agent completes a task, select the **Cadet Agent Reviewer** from the agent picker. Provide the task, story, or PR to review:
|
|
70
148
|
|
|
@@ -101,8 +179,12 @@ If a specific game repository needs local conventions, add a policy file under `
|
|
|
101
179
|
## Package Output
|
|
102
180
|
Running `./package-agent.ps1` produces `cadet-agent.zip` with this layout:
|
|
103
181
|
- `.cadet/agent/core/`
|
|
182
|
+
- `.cadet/agent/core/skills/`
|
|
183
|
+
- `.cadet/agent/core/templates/`
|
|
104
184
|
- `.github/agents/cadet.agent.md`
|
|
105
185
|
- `.github/agents/cadet-agent-reviewer.agent.md`
|
|
186
|
+
- `.github/prompts/cadet-*.prompt.md`
|
|
187
|
+
- `.github/hooks/`
|
|
106
188
|
- `.cursor/rules/cadet-agent.md`
|
|
107
189
|
- `.continue/rules/cadet-agent.md`
|
|
108
190
|
- `.claude/skills/cadet-agent.md`
|
package/package.json
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "cadet-agent",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Cross-IDE agent framework for Unity/C# game-development โ one-command install",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"cadet-agent": "bin/cli.mjs"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"test": "node --test test/*.test.mjs"
|
|
11
|
-
},
|
|
12
|
-
"files": [
|
|
13
|
-
"bin/",
|
|
14
|
-
"src/"
|
|
15
|
-
],
|
|
16
|
-
"keywords": [
|
|
17
|
-
"cadet",
|
|
18
|
-
"cadet-agent",
|
|
19
|
-
"unity",
|
|
20
|
-
"game-development",
|
|
21
|
-
"ai-agent",
|
|
22
|
-
"copilot",
|
|
23
|
-
"cursor",
|
|
24
|
-
"claude-code"
|
|
25
|
-
],
|
|
26
|
-
"license": "CC-BY-4.0",
|
|
27
|
-
"repository": {
|
|
28
|
-
"type": "git",
|
|
29
|
-
"url": "git+https://github.com/naishtech/cadet-agent.git"
|
|
30
|
-
},
|
|
31
|
-
"homepage": "https://github.com/naishtech/cadet-agent#readme",
|
|
32
|
-
"engines": {
|
|
33
|
-
"node": ">=18.0.0"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "cadet-agent",
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"description": "Cross-IDE agent framework for Unity/C# game-development โ one-command install",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"cadet-agent": "bin/cli.mjs"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node --test test/*.test.mjs"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"bin/",
|
|
14
|
+
"src/"
|
|
15
|
+
],
|
|
16
|
+
"keywords": [
|
|
17
|
+
"cadet",
|
|
18
|
+
"cadet-agent",
|
|
19
|
+
"unity",
|
|
20
|
+
"game-development",
|
|
21
|
+
"ai-agent",
|
|
22
|
+
"copilot",
|
|
23
|
+
"cursor",
|
|
24
|
+
"claude-code"
|
|
25
|
+
],
|
|
26
|
+
"license": "CC-BY-4.0",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/naishtech/cadet-agent.git"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/naishtech/cadet-agent#readme",
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18.0.0"
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/upgrades.mjs
CHANGED
|
@@ -35,17 +35,14 @@ function deletePath(targetDir, relativePath) {
|
|
|
35
35
|
|
|
36
36
|
// โโ Upgrade registry โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
37
37
|
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
38
|
+
// Add upgrade entries when removing/renaming managed paths.
|
|
39
|
+
// Key = FROM version. Example:
|
|
40
|
+
// '0.17.0': (targetDir) => [
|
|
41
|
+
// ...deletePath(targetDir, '.cadet/some-old-dir'),
|
|
42
|
+
// ...deletePath(targetDir, '.github/old-agent.agent.md'),
|
|
43
|
+
// ],
|
|
41
44
|
|
|
42
|
-
const upgrades = {
|
|
43
|
-
'0.15.3': (targetDir) => [
|
|
44
|
-
...deletePath(targetDir, '.cadet/orchestrator'),
|
|
45
|
-
...deletePath(targetDir, '.github/prompts'),
|
|
46
|
-
...deletePath(targetDir, 'AGENTS.md'),
|
|
47
|
-
],
|
|
48
|
-
};
|
|
45
|
+
const upgrades = {};
|
|
49
46
|
|
|
50
47
|
// โโ Runner โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
51
48
|
|