@event4u/agent-config 2.14.0 → 2.15.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/.agent-src/commands/agents/user/accept.md +117 -0
- package/.agent-src/commands/agents/user/init.md +163 -0
- package/.agent-src/commands/agents/user/review.md +107 -0
- package/.agent-src/commands/agents/user/show.md +109 -0
- package/.agent-src/commands/agents/user/update.md +98 -0
- package/.agent-src/commands/agents/user.md +66 -0
- package/.agent-src/commands/agents.md +2 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.claude-plugin/marketplace.json +7 -1
- package/CHANGELOG.md +29 -0
- package/README.md +18 -3
- package/config/agent-settings.template.yml +4 -0
- package/config/gitignore-block.txt +11 -0
- package/docs/architecture.md +1 -1
- package/docs/catalog.md +8 -2
- package/docs/contracts/agent-user-schema.md +165 -0
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/file-ownership-matrix.json +190 -0
- package/docs/examples/agent-user.example.md +21 -0
- package/docs/getting-started.md +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents:user-accept
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: agents
|
|
5
|
+
sub: user
|
|
6
|
+
description: Apply a buffered observation to .agent-user.md after explicit user confirmation; bumps last_updated and drops the applied observations from the buffer.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: false
|
|
10
|
+
rationale: "Mutates .agent-user.md — only run from /agents user review or explicit user invocation."
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /agents user accept
|
|
14
|
+
|
|
15
|
+
Apply a buffered observation from
|
|
16
|
+
[`.agent-user.observations.jsonl`](../../../../../docs/contracts/agent-user-schema.md#observation-buffer)
|
|
17
|
+
to `.agent-user.md` after explicit confirmation.
|
|
18
|
+
|
|
19
|
+
Use when:
|
|
20
|
+
|
|
21
|
+
- `/agents user review` surfaced an observation worth applying.
|
|
22
|
+
- The user invoked `/agents user accept <field>` directly.
|
|
23
|
+
|
|
24
|
+
Never runs autonomously — always asks before writing.
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
### 1. Preconditions
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ls .agent-user.md 2>/dev/null
|
|
32
|
+
ls .agent-user.observations.jsonl 2>/dev/null
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Either missing → print "Run `/agents user init` and accumulate
|
|
36
|
+
observations first." and stop.
|
|
37
|
+
|
|
38
|
+
### 2. Resolve target field
|
|
39
|
+
|
|
40
|
+
| Invocation | Resolved field |
|
|
41
|
+
|---|---|
|
|
42
|
+
| Handed off from `/agents user review` option 1 | The most-frequent field |
|
|
43
|
+
| `/agents user accept <field>` | `<field>` (must match the schema enum) |
|
|
44
|
+
| `/agents user accept` with no arg | Print the field list, ask which |
|
|
45
|
+
|
|
46
|
+
Invalid field → print the schema enum and stop.
|
|
47
|
+
|
|
48
|
+
### 3. Compute proposed change
|
|
49
|
+
|
|
50
|
+
For the resolved field:
|
|
51
|
+
|
|
52
|
+
1. Read every matching observation from the buffer.
|
|
53
|
+
2. Pick the **latest** `suggest` value (most recent `ts` wins).
|
|
54
|
+
3. Read the current value from `.agent-user.md`.
|
|
55
|
+
4. If they match, print "No change — current value already matches
|
|
56
|
+
the latest observation." and skip to step 6.
|
|
57
|
+
|
|
58
|
+
### 4. Confirm
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Apply this change to .agent-user.md?
|
|
62
|
+
|
|
63
|
+
field : {field}
|
|
64
|
+
current : "{current_value}"
|
|
65
|
+
proposed: "{proposed_value}"
|
|
66
|
+
source : {n} observations between {oldest_ts} and {newest_ts}
|
|
67
|
+
evidence: {latest_evidence, truncated to 200 chars}
|
|
68
|
+
|
|
69
|
+
> 1. Apply
|
|
70
|
+
> 2. Skip — keep current value, drop these observations from the buffer
|
|
71
|
+
> 3. Cancel — leave .agent-user.md and buffer untouched
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
One question per turn. Wait for the user's number.
|
|
75
|
+
|
|
76
|
+
### 5. Write
|
|
77
|
+
|
|
78
|
+
On `1. Apply`:
|
|
79
|
+
|
|
80
|
+
1. Rewrite the targeted field in `.agent-user.md` frontmatter.
|
|
81
|
+
Preserve every other field byte-for-byte (use a YAML round-trip
|
|
82
|
+
loader that keeps formatting).
|
|
83
|
+
2. Bump `last_updated` to today (ISO `YYYY-MM-DD`).
|
|
84
|
+
3. Validate the result: schema present, ≤100 lines, privacy floor
|
|
85
|
+
clean. Any violation → roll back and print the error.
|
|
86
|
+
4. Drop **all** applied observations for that field from the buffer
|
|
87
|
+
(rewrite the JSONL minus matching lines).
|
|
88
|
+
|
|
89
|
+
On `2. Skip`: leave `.agent-user.md` untouched but still drop the
|
|
90
|
+
observations for that field from the buffer.
|
|
91
|
+
|
|
92
|
+
On `3. Cancel`: stop without any write.
|
|
93
|
+
|
|
94
|
+
### 6. Confirm
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
✅ .agent-user.md updated ({field}: "{old}" → "{new}", last_updated: YYYY-MM-DD).
|
|
98
|
+
Buffer: {n} observations removed, {m} remaining.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Do NOT commit. Do NOT auto-chain to a second field.
|
|
102
|
+
|
|
103
|
+
## Rules
|
|
104
|
+
|
|
105
|
+
- One field per invocation. The user runs `/agents user accept` again
|
|
106
|
+
for the next field.
|
|
107
|
+
- Never write without explicit confirmation in step 4.
|
|
108
|
+
- Never bypass the privacy-floor scan, even if the buffer writer
|
|
109
|
+
already redacted.
|
|
110
|
+
- Mirror the user's language for prompts per
|
|
111
|
+
[`language-and-tone`](../../../../.agent-src/rules/language-and-tone.md).
|
|
112
|
+
|
|
113
|
+
## See also
|
|
114
|
+
|
|
115
|
+
- Schema + buffer contract: [`agent-user-schema § Observation buffer`](../../../../../docs/contracts/agent-user-schema.md#observation-buffer).
|
|
116
|
+
- Parent: [`/agents user`](../user.md).
|
|
117
|
+
- Sibling: [`/agents user review`](review.md), [`/agents user update`](update.md).
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents:user-init
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: agents
|
|
5
|
+
sub: user
|
|
6
|
+
description: Interactive interview that creates the project-root .agent-user.md from the locked v1 schema (name, language, role, style, voice_sample).
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: false
|
|
10
|
+
rationale: "User-persona bootstrap — only deliberately, never auto-suggested."
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /agents user init
|
|
14
|
+
|
|
15
|
+
Short interactive interview that creates **`.agent-user.md`** at the
|
|
16
|
+
project root from the locked v1 schema in
|
|
17
|
+
[`docs/contracts/agent-user-schema.md`](../../../../../docs/contracts/agent-user-schema.md).
|
|
18
|
+
|
|
19
|
+
Use when:
|
|
20
|
+
|
|
21
|
+
- The user wants the agent to address them by name / nickname / role.
|
|
22
|
+
- A fresh consumer project does not yet have `.agent-user.md`.
|
|
23
|
+
|
|
24
|
+
Refuses to overwrite an existing file without `--force`.
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
### 1. Precondition checks
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ls .agent-user.md 2>/dev/null
|
|
32
|
+
ls docs/contracts/agent-user-schema.md 2>/dev/null
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| State | Action |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `.agent-user.md` missing | Proceed |
|
|
38
|
+
| `.agent-user.md` exists, no `--force` | Abort; offer `/agents user update` instead |
|
|
39
|
+
| `.agent-user.md` exists, `--force` set | Proceed (will overwrite); back up to `.agent-user.md.bak` first |
|
|
40
|
+
| Schema contract missing | Abort with "package not installed / out of date" hint |
|
|
41
|
+
|
|
42
|
+
### 2. Pre-fill from `.agent-settings.yml`
|
|
43
|
+
|
|
44
|
+
If `.agent-settings.yml` exists, read `personal.user_name` and offer
|
|
45
|
+
it as the default for `identity.name`. Do **not** read anything else —
|
|
46
|
+
the persona file is a separate primitive.
|
|
47
|
+
|
|
48
|
+
### 3. Interview (one question per turn, numbered options)
|
|
49
|
+
|
|
50
|
+
Ask in this order. Each answer drives one frontmatter field.
|
|
51
|
+
|
|
52
|
+
1. **Name** — required.
|
|
53
|
+
`Wie soll ich dich ansprechen? (Name)` / `What name should I use?`
|
|
54
|
+
Default: pre-fill from step 2 if available.
|
|
55
|
+
|
|
56
|
+
2. **Nickname** — optional.
|
|
57
|
+
`Bevorzugter Spitzname für den Chat? (leer = wie Name)` /
|
|
58
|
+
`Preferred chat nickname? (blank = same as name)`
|
|
59
|
+
|
|
60
|
+
3. **Language** — required, BCP-47-ish.
|
|
61
|
+
```
|
|
62
|
+
> 1. de — Deutsch
|
|
63
|
+
> 2. en — English
|
|
64
|
+
> 3. other — type the code (e.g. "fr", "es")
|
|
65
|
+
```
|
|
66
|
+
Default: detect from the user's last message.
|
|
67
|
+
|
|
68
|
+
4. **Role** — required, short free-form.
|
|
69
|
+
`Kurze Rollenbeschreibung (z. B. "founder/engineer", "product manager", "designer")` /
|
|
70
|
+
`Short role label`
|
|
71
|
+
|
|
72
|
+
5. **Style — formality**.
|
|
73
|
+
```
|
|
74
|
+
> 1. informal — Du / first-name (default)
|
|
75
|
+
> 2. formal — Sie / full name
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
6. **Style — pace**.
|
|
79
|
+
```
|
|
80
|
+
> 1. pragmatic — balanced (default)
|
|
81
|
+
> 2. thorough — more verification, longer replies
|
|
82
|
+
> 3. rapid — shorter replies, fewer caveats
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
7. **Voice sample** — required.
|
|
86
|
+
`Paste eine typische Nachricht von dir (1–3 Sätze, im normalen Schreibstil)` /
|
|
87
|
+
`Paste one typical message of yours (1–3 sentences, your normal style)`
|
|
88
|
+
|
|
89
|
+
### 4. Privacy-floor sanity check
|
|
90
|
+
|
|
91
|
+
Before writing, scan the collected `voice_sample` and `role` for:
|
|
92
|
+
|
|
93
|
+
- Credentials, API keys, tokens, passwords (regex on common formats).
|
|
94
|
+
- Third-party full names that look like contacts (heuristic: capitalized first+last pair near words like "wife", "boss", "kid", "Frau", "Mann", "Chef").
|
|
95
|
+
- Financial figures (currency symbols + numbers).
|
|
96
|
+
- Health/legal status keywords.
|
|
97
|
+
|
|
98
|
+
Hit → surface the line and ask the user to redact before proceeding.
|
|
99
|
+
Per [`agent-user-schema § Explicit exclusions`](../../../../../docs/contracts/agent-user-schema.md#explicit-exclusions).
|
|
100
|
+
|
|
101
|
+
### 5. Render and write
|
|
102
|
+
|
|
103
|
+
Render the frontmatter exactly as locked in the schema. Add an empty
|
|
104
|
+
`# Notes` body. Set `last_updated` to today (ISO date).
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
---
|
|
108
|
+
version: 1
|
|
109
|
+
identity:
|
|
110
|
+
name: "..."
|
|
111
|
+
nickname: "..." # omit if blank
|
|
112
|
+
language: "..."
|
|
113
|
+
role: "..."
|
|
114
|
+
style:
|
|
115
|
+
formality: "..."
|
|
116
|
+
pace: "...""
|
|
117
|
+
voice_sample: |
|
|
118
|
+
...
|
|
119
|
+
last_updated: "YYYY-MM-DD"
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
# Notes
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Verify the rendered file is ≤100 lines (it will be — empty Notes body)
|
|
126
|
+
before writing to `.agent-user.md`.
|
|
127
|
+
|
|
128
|
+
### 6. Gitignore check
|
|
129
|
+
|
|
130
|
+
If the consumer `.gitignore` does not yet contain `.agent-user.md`,
|
|
131
|
+
print a one-line nudge:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
ℹ️ .agent-user.md is not yet in your .gitignore. Run /sync-gitignore to add it.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The package-managed block adds it automatically; this nudge only
|
|
138
|
+
fires when the block is missing or out of date.
|
|
139
|
+
|
|
140
|
+
### 7. Confirm
|
|
141
|
+
|
|
142
|
+
Print the file path and a one-line summary:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
✅ .agent-user.md written ({n} lines).
|
|
146
|
+
identity: {nickname or name} · language: {lang} · role: {role} · style: {formality}/{pace}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Do NOT commit. Do NOT run any other `/agents user` sub-sub-command.
|
|
150
|
+
|
|
151
|
+
## Rules
|
|
152
|
+
|
|
153
|
+
- One question per turn. Never batch.
|
|
154
|
+
- Numbered options where the answer is enum-like (per
|
|
155
|
+
[`user-interaction`](../../../../.agent-src/rules/user-interaction.md)).
|
|
156
|
+
- Never invent fields not in the locked v1 schema.
|
|
157
|
+
- Never write third-party PII even if the user pastes it — surface
|
|
158
|
+
and ask for redaction.
|
|
159
|
+
|
|
160
|
+
## See also
|
|
161
|
+
|
|
162
|
+
- Schema: [`agent-user-schema`](../../../../../docs/contracts/agent-user-schema.md).
|
|
163
|
+
- Parent: [`/agents user`](../user.md).
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents:user-review
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: agents
|
|
5
|
+
sub: user
|
|
6
|
+
description: List buffered observations from .agent-user.observations.jsonl with numbered options to inspect or accept individually.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "review user observations, see what the agent learned about me, list buffered persona updates"
|
|
11
|
+
trigger_context: "user wants to see what the agent has buffered about their preferences before applying changes"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /agents user review
|
|
15
|
+
|
|
16
|
+
List the buffered observations in `.agent-user.observations.jsonl`
|
|
17
|
+
and let the user choose which to inspect or accept.
|
|
18
|
+
|
|
19
|
+
Use when:
|
|
20
|
+
|
|
21
|
+
- You want to see what the agent has learned about your preferences.
|
|
22
|
+
- You suspect `.agent-user.md` is out of date and want a curated
|
|
23
|
+
diff before editing.
|
|
24
|
+
- You want to dismiss observations the agent collected.
|
|
25
|
+
|
|
26
|
+
Read-only by itself — actual changes go through
|
|
27
|
+
[`/agents user accept`](accept.md) or
|
|
28
|
+
[`/agents user update`](update.md).
|
|
29
|
+
|
|
30
|
+
## Steps
|
|
31
|
+
|
|
32
|
+
### 1. Locate buffer
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
ls .agent-user.observations.jsonl 2>/dev/null
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
| State | Action |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Missing or empty | Print "No buffered observations. The agent has not learned anything new." and stop |
|
|
41
|
+
| Present | Proceed |
|
|
42
|
+
|
|
43
|
+
### 2. Parse + group
|
|
44
|
+
|
|
45
|
+
Read every line as JSON. Drop malformed lines silently (one-line
|
|
46
|
+
warning at the end with the count). Group by `field`:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
.agent-user.observations.jsonl — {n} observations across {k} fields
|
|
50
|
+
|
|
51
|
+
1. style.pace ({n}× since {oldest_ts})
|
|
52
|
+
latest suggest: "rapid" — evidence: user said 'mach kürzer' 3× this session
|
|
53
|
+
2. identity.nickname ({n}× since {oldest_ts})
|
|
54
|
+
latest suggest: "Matze" — evidence: user signed last 3 messages "— Matze"
|
|
55
|
+
3. language ({n}× since {oldest_ts})
|
|
56
|
+
latest suggest: "de" — evidence: last 12 messages in German, .agent-user.md says "en"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Sort by frequency (most observations first), then by recency.
|
|
60
|
+
|
|
61
|
+
### 3. Ask
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
> 1. Accept the most-frequent suggestion ({field} → {value})
|
|
65
|
+
> 2. Inspect a specific field
|
|
66
|
+
> 3. Clear the buffer (discard all)
|
|
67
|
+
> 4. Cancel
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Choice | Action |
|
|
71
|
+
|---|---|
|
|
72
|
+
| 1 | Hand off to [`/agents user accept`](accept.md) with the chosen field |
|
|
73
|
+
| 2 | Print every observation for that field with evidence + ts, then re-ask |
|
|
74
|
+
| 3 | Truncate `.agent-user.observations.jsonl` to zero bytes; print confirmation |
|
|
75
|
+
| 4 | Stop without changes |
|
|
76
|
+
|
|
77
|
+
One question per turn. Wait for the user's number.
|
|
78
|
+
|
|
79
|
+
### 4. Privacy-floor verify
|
|
80
|
+
|
|
81
|
+
Before printing any observation's `evidence` text, scan it for the
|
|
82
|
+
[exclusions list](../../../../../docs/contracts/agent-user-schema.md#explicit-exclusions).
|
|
83
|
+
Match → replace the offending substring with `[redacted]` in the
|
|
84
|
+
rendered output.
|
|
85
|
+
|
|
86
|
+
The buffer writer is expected to redact on write, but treat this as
|
|
87
|
+
defense in depth — the user must never see leaked third-party PII or
|
|
88
|
+
credentials from a downstream agent's bad write.
|
|
89
|
+
|
|
90
|
+
### 5. Stop
|
|
91
|
+
|
|
92
|
+
Do NOT commit. Do NOT auto-chain past one user-selected action per
|
|
93
|
+
turn.
|
|
94
|
+
|
|
95
|
+
## Rules
|
|
96
|
+
|
|
97
|
+
- Read-only on `.agent-user.md`. Only `accept` writes to the persona
|
|
98
|
+
file.
|
|
99
|
+
- Buffer is the only mutable artefact (truncate via option 3).
|
|
100
|
+
- Mirror the user's language for prompts per
|
|
101
|
+
[`language-and-tone`](../../../../.agent-src/rules/language-and-tone.md).
|
|
102
|
+
|
|
103
|
+
## See also
|
|
104
|
+
|
|
105
|
+
- Schema + buffer contract: [`agent-user-schema § Observation buffer`](../../../../../docs/contracts/agent-user-schema.md#observation-buffer).
|
|
106
|
+
- Parent: [`/agents user`](../user.md).
|
|
107
|
+
- Sibling: [`/agents user accept`](accept.md), [`/agents user update`](update.md).
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents:user-show
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: agents
|
|
5
|
+
sub: user
|
|
6
|
+
description: Read-only render of .agent-user.md — prints the persona summary the host agent loads at session start.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "show user persona, render .agent-user.md, print who the user is"
|
|
11
|
+
trigger_context: "user wants to see what's currently in .agent-user.md without editing"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /agents user show
|
|
15
|
+
|
|
16
|
+
Read-only render of the project-root `.agent-user.md` per
|
|
17
|
+
[`docs/contracts/agent-user-schema.md`](../../../../../docs/contracts/agent-user-schema.md).
|
|
18
|
+
|
|
19
|
+
Use when:
|
|
20
|
+
|
|
21
|
+
- You want to see what persona the host agent currently loads.
|
|
22
|
+
- You want to confirm `last_updated` is fresh (≤90 days).
|
|
23
|
+
- You want a paste-ready summary for handoff or onboarding.
|
|
24
|
+
|
|
25
|
+
Does **not** edit, observe, or buffer anything. Pure read.
|
|
26
|
+
|
|
27
|
+
## Steps
|
|
28
|
+
|
|
29
|
+
### 1. Locate the file
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
ls .agent-user.md 2>/dev/null
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| State | Action |
|
|
36
|
+
|---|---|
|
|
37
|
+
| Present | Proceed |
|
|
38
|
+
| Missing | Print "No `.agent-user.md` found at project root. Run `/agents user init` to create one." and stop |
|
|
39
|
+
|
|
40
|
+
### 2. Parse frontmatter
|
|
41
|
+
|
|
42
|
+
Parse the YAML frontmatter and the body (everything after the second
|
|
43
|
+
`---`). Validate against the locked v1 schema:
|
|
44
|
+
|
|
45
|
+
- `version` is `1`.
|
|
46
|
+
- `identity.name`, `language`, `role`, `style.formality`, `style.pace`,
|
|
47
|
+
`voice_sample`, `last_updated` are all present.
|
|
48
|
+
- File is ≤100 lines total.
|
|
49
|
+
|
|
50
|
+
Any violation → print a one-line warning identifying the missing /
|
|
51
|
+
malformed field and continue with the render (so the user can fix it
|
|
52
|
+
via `/agents user update`).
|
|
53
|
+
|
|
54
|
+
### 3. Render
|
|
55
|
+
|
|
56
|
+
Print the persona in this exact shape:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
.agent-user.md ({n} lines, last_updated: YYYY-MM-DD{staleness_marker})
|
|
60
|
+
|
|
61
|
+
Identity : {nickname or name} ({name} if nickname is set)
|
|
62
|
+
Language : {language}
|
|
63
|
+
Role : {role}
|
|
64
|
+
Style : {formality} · {pace}
|
|
65
|
+
|
|
66
|
+
Voice sample
|
|
67
|
+
─────────────
|
|
68
|
+
{voice_sample, indented 2 spaces}
|
|
69
|
+
|
|
70
|
+
Notes
|
|
71
|
+
─────────────
|
|
72
|
+
{body, indented 2 spaces; "(empty)" if no notes}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Where `{staleness_marker}` is:
|
|
76
|
+
|
|
77
|
+
- empty when `last_updated` is within 90 days.
|
|
78
|
+
- ` ⚠️ >90 days` when older (per the schema staleness rule).
|
|
79
|
+
|
|
80
|
+
### 4. Loader hint
|
|
81
|
+
|
|
82
|
+
If the host-agent loader has NOT yet picked up the file this session
|
|
83
|
+
(detect via session memory if available), print one line:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
ℹ️ Host agent will load this on next session start. Restart your chat to apply.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Otherwise omit — agent already knows.
|
|
90
|
+
|
|
91
|
+
### 5. Stop
|
|
92
|
+
|
|
93
|
+
Do NOT chain to other `/agents user *` commands. Do NOT commit.
|
|
94
|
+
|
|
95
|
+
## Rules
|
|
96
|
+
|
|
97
|
+
- Read-only. Never write `.agent-user.md` from this command.
|
|
98
|
+
- Never print fields the schema does not define — even if they exist
|
|
99
|
+
in the file. (Forward-compat: an unexpected field is a warning, not
|
|
100
|
+
a render target.)
|
|
101
|
+
- Mirror the user's language for the rendered labels (`Identity` /
|
|
102
|
+
`Identität`, `Language` / `Sprache`, etc.) per
|
|
103
|
+
[`language-and-tone`](../../../../.agent-src/rules/language-and-tone.md).
|
|
104
|
+
|
|
105
|
+
## See also
|
|
106
|
+
|
|
107
|
+
- Schema: [`agent-user-schema`](../../../../../docs/contracts/agent-user-schema.md).
|
|
108
|
+
- Parent: [`/agents user`](../user.md).
|
|
109
|
+
- Sibling: [`/agents user init`](init.md), [`/agents user update`](update.md).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents:user-update
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: agents
|
|
5
|
+
sub: user
|
|
6
|
+
description: Open .agent-user.md in the user's IDE for manual edit; validates schema and 100-line cap on save.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "edit user persona, update .agent-user.md, change nickname, change language, refresh voice sample"
|
|
11
|
+
trigger_context: "user wants to manually edit the persona file rather than answer interview questions"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /agents user update
|
|
15
|
+
|
|
16
|
+
Open `.agent-user.md` in the user's IDE for a manual edit, then
|
|
17
|
+
validate against the locked v1 schema on save.
|
|
18
|
+
|
|
19
|
+
Use when:
|
|
20
|
+
|
|
21
|
+
- The user knows exactly what they want to change (nickname, language,
|
|
22
|
+
voice sample) and doesn't need the interview flow.
|
|
23
|
+
- The user wants to edit the freeform `# Notes` body.
|
|
24
|
+
- `/agents user show` flagged a malformed field.
|
|
25
|
+
|
|
26
|
+
For agent-driven changes from buffered observations, use
|
|
27
|
+
[`/agents user review`](review.md) → [`/agents user accept`](accept.md).
|
|
28
|
+
|
|
29
|
+
## Steps
|
|
30
|
+
|
|
31
|
+
### 1. Precondition
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
ls .agent-user.md 2>/dev/null
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Missing → print "No `.agent-user.md` found. Run `/agents user init`
|
|
38
|
+
first." and stop.
|
|
39
|
+
|
|
40
|
+
### 2. Open in IDE
|
|
41
|
+
|
|
42
|
+
Use the [`file-editor`](../../../../.agent-src/skills/file-editor/SKILL.md)
|
|
43
|
+
skill — reads `personal.ide` from `.agent-settings.yml` (vscode,
|
|
44
|
+
phpstorm, cursor, etc.) and opens the file.
|
|
45
|
+
|
|
46
|
+
If `personal.ide` is unset or `auto_open_files: false`, print:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
ℹ️ Open .agent-user.md in your editor and re-run /agents user update --validate when done.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 3. Wait for save → validate
|
|
53
|
+
|
|
54
|
+
When called with `--validate` (or after the user confirms "done"):
|
|
55
|
+
|
|
56
|
+
1. Read `.agent-user.md`.
|
|
57
|
+
2. Parse frontmatter; check every required field per
|
|
58
|
+
[`agent-user-schema § Field reference`](../../../../../docs/contracts/agent-user-schema.md#field-reference).
|
|
59
|
+
3. Check file size ≤100 lines.
|
|
60
|
+
4. Run the privacy-floor scan (same as `init` step 4): credentials,
|
|
61
|
+
third-party PII, financial figures, health/legal status.
|
|
62
|
+
|
|
63
|
+
| Result | Action |
|
|
64
|
+
|---|---|
|
|
65
|
+
| All checks pass | Bump `last_updated` to today; print one-line confirmation |
|
|
66
|
+
| Schema violation | Print the offending field + line, ask user to fix |
|
|
67
|
+
| >100 lines | Print line count, ask user to trim |
|
|
68
|
+
| Privacy-floor hit | Print the suspect line, ask user to redact |
|
|
69
|
+
|
|
70
|
+
### 4. Bump `last_updated`
|
|
71
|
+
|
|
72
|
+
On successful validation, rewrite the `last_updated` field with
|
|
73
|
+
today's date (ISO `YYYY-MM-DD`). Preserve all other content
|
|
74
|
+
verbatim.
|
|
75
|
+
|
|
76
|
+
### 5. Confirm
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
✅ .agent-user.md validated ({n} lines, last_updated: YYYY-MM-DD).
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Do NOT commit. Do NOT chain to another `/agents user *` command.
|
|
83
|
+
|
|
84
|
+
## Rules
|
|
85
|
+
|
|
86
|
+
- Never edit `.agent-user.md` directly from this command except for
|
|
87
|
+
the `last_updated` bump in step 4. All other edits go through the
|
|
88
|
+
user's IDE.
|
|
89
|
+
- Never write third-party PII even if it appears in the user's edit —
|
|
90
|
+
re-surface and ask for redaction.
|
|
91
|
+
- Mirror the user's language for all prompts per
|
|
92
|
+
[`language-and-tone`](../../../../.agent-src/rules/language-and-tone.md).
|
|
93
|
+
|
|
94
|
+
## See also
|
|
95
|
+
|
|
96
|
+
- Schema: [`agent-user-schema`](../../../../../docs/contracts/agent-user-schema.md).
|
|
97
|
+
- Parent: [`/agents user`](../user.md).
|
|
98
|
+
- Sibling: [`/agents user init`](init.md), [`/agents user show`](show.md), [`/agents user review`](review.md).
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents:user
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: agents
|
|
5
|
+
sub: user
|
|
6
|
+
description: User-persona file (.agent-user.md) — interview, render, and maintain who the user is and how they want to be addressed.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
type: orchestrator
|
|
9
|
+
suggestion:
|
|
10
|
+
eligible: true
|
|
11
|
+
trigger_description: "create user persona, render .agent-user.md, review observations, accept observations, edit user file"
|
|
12
|
+
trigger_context: "user wants to bootstrap or maintain the .agent-user.md persona file (name, language, role, style, voice sample)"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# /agents user
|
|
16
|
+
|
|
17
|
+
Sub-dispatcher for the user-persona file
|
|
18
|
+
[`/.agent-user.md`](../../../docs/contracts/agent-user-schema.md) — a
|
|
19
|
+
single, project-root, gitignored Markdown file that captures who the
|
|
20
|
+
user is and how they want the agent to address them.
|
|
21
|
+
|
|
22
|
+
**Why this is its own cluster:** `AGENTS.md` describes the *project*
|
|
23
|
+
to the agent. `.agent-user.md` describes the *user* to the agent.
|
|
24
|
+
Two distinct primitives — same `/agents` family for discoverability,
|
|
25
|
+
separate sub-commands for separation of concerns.
|
|
26
|
+
|
|
27
|
+
## Sub-sub-commands
|
|
28
|
+
|
|
29
|
+
| Sub-sub-command | Routes to | Purpose |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `/agents user init` | `commands/agents/user/init.md` | Short interview → creates `.agent-user.md` |
|
|
32
|
+
| `/agents user show` | `commands/agents/user/show.md` | Read-only render of the persona |
|
|
33
|
+
| `/agents user review` | `commands/agents/user/review.md` | List buffered observations from `.agent-user.observations.jsonl` |
|
|
34
|
+
| `/agents user accept` | `commands/agents/user/accept.md` | Apply a buffered observation with confirmation |
|
|
35
|
+
| `/agents user update` | `commands/agents/user/update.md` | Open in IDE for manual edit; validate on save |
|
|
36
|
+
|
|
37
|
+
Schema contract:
|
|
38
|
+
[`docs/contracts/agent-user-schema.md`](../../../docs/contracts/agent-user-schema.md).
|
|
39
|
+
|
|
40
|
+
## Dispatch
|
|
41
|
+
|
|
42
|
+
1. Parse the user's argument: `/agents user <sub-sub-command> [args]`.
|
|
43
|
+
2. Look up the sub-sub-command in the table above.
|
|
44
|
+
3. Load the routed file and follow its `## Steps` section verbatim
|
|
45
|
+
with the remaining args.
|
|
46
|
+
4. Unknown or missing sub-sub-command → print the table above and
|
|
47
|
+
ask which one. **One sub-sub-command per turn**; do not chain.
|
|
48
|
+
|
|
49
|
+
## Rules
|
|
50
|
+
|
|
51
|
+
- **Do NOT commit, push, or open a PR** unless the sub-sub-command
|
|
52
|
+
explicitly authorizes it.
|
|
53
|
+
- **Do NOT write third-party PII** — names, dates, financial figures,
|
|
54
|
+
health/legal status. See the
|
|
55
|
+
[exclusions list](../../../docs/contracts/agent-user-schema.md#explicit-exclusions).
|
|
56
|
+
- **Do NOT introduce network code** in this package. External
|
|
57
|
+
enrichment is rejected for v1 — see the
|
|
58
|
+
[determinism floor](../../../docs/contracts/agent-user-schema.md#determinism-floor).
|
|
59
|
+
- **Edit `.agent-src.uncompressed/` only.** `.agent-src/` and
|
|
60
|
+
`.augment/` regenerate from source.
|
|
61
|
+
|
|
62
|
+
## See also
|
|
63
|
+
|
|
64
|
+
- [`agent-user-schema`](../../../docs/contracts/agent-user-schema.md) — locked v1 frontmatter and field reference.
|
|
65
|
+
- [`/agents`](../AGENTS.md) — parent cluster.
|
|
66
|
+
- [`/agents init`](init.md) — project-side bootstrap (separate primitive).
|
|
@@ -28,6 +28,7 @@ agent infrastructure (rules, skills, pointers).
|
|
|
28
28
|
| `/agents init` | `commands/agents/init.md` | Bootstrap the agent layer — create `AGENTS.md` + tool stubs from the canonical template |
|
|
29
29
|
| `/agents optimize` | `commands/agents/optimize.md` | Refactor `AGENTS.md` to the Thin-Root contract; propagate to multi-tool stubs |
|
|
30
30
|
| `/agents audit` | `commands/agents/audit.md` | Read-only health check — token overhead, rule triggers, AGENTS.md health, stale references |
|
|
31
|
+
| `/agents user` | `commands/agents/user.md` | User-persona file (`.agent-user.md`) — interview, render, maintenance |
|
|
31
32
|
|
|
32
33
|
Sub-command names match the locked contract in
|
|
33
34
|
[`docs/contracts/command-clusters.md`](../docs/contracts/command-clusters.md).
|
|
@@ -43,6 +44,7 @@ Sub-command names match the locked contract in
|
|
|
43
44
|
> 1. init — bootstrap AGENTS.md + tool stubs
|
|
44
45
|
> 2. optimize — refactor AGENTS.md to the Thin-Root contract
|
|
45
46
|
> 3. audit — read-only health check on the agent layer
|
|
47
|
+
> 4. user — manage `.agent-user.md` (user-persona file)
|
|
46
48
|
|
|
47
49
|
## Rules
|
|
48
50
|
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.py (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "2.
|
|
42
|
+
agent_config_version: "2.14.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
|
|
9
|
-
"version": "2.
|
|
9
|
+
"version": "2.15.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
|
@@ -53,6 +53,12 @@
|
|
|
53
53
|
"./.claude/skills/agents-init",
|
|
54
54
|
"./.claude/skills/agents-md-thin-root",
|
|
55
55
|
"./.claude/skills/agents-optimize",
|
|
56
|
+
"./.claude/skills/agents-user",
|
|
57
|
+
"./.claude/skills/agents-user-accept",
|
|
58
|
+
"./.claude/skills/agents-user-init",
|
|
59
|
+
"./.claude/skills/agents-user-review",
|
|
60
|
+
"./.claude/skills/agents-user-show",
|
|
61
|
+
"./.claude/skills/agents-user-update",
|
|
56
62
|
"./.claude/skills/ai-council",
|
|
57
63
|
"./.claude/skills/analysis-autonomous-mode",
|
|
58
64
|
"./.claude/skills/analysis-skill-router",
|
package/CHANGELOG.md
CHANGED
|
@@ -607,6 +607,35 @@ our recommendation order, not its support status.
|
|
|
607
607
|
> that forces a new era split (`# Era: 2.12.x`, etc.) — see
|
|
608
608
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
609
609
|
|
|
610
|
+
## [2.15.0](https://github.com/event4u-app/agent-config/compare/2.14.0...2.15.0) (2026-05-15)
|
|
611
|
+
|
|
612
|
+
### Features
|
|
613
|
+
|
|
614
|
+
* **agent-user:** add /agents user command cluster (init, show, review, accept, update) ([15d53d8](https://github.com/event4u-app/agent-config/commit/15d53d8d9a2365b044831cd42127e247a70d7e20))
|
|
615
|
+
* **agent-user:** add v1 schema contract for .agent-user.md persona file ([64f4eab](https://github.com/event4u-app/agent-config/commit/64f4eab62ccf6a2606fbca0c56d398372c05a7a0))
|
|
616
|
+
|
|
617
|
+
### Bug Fixes
|
|
618
|
+
|
|
619
|
+
* **agent-user:** inline council-reference summary per no-roadmap-references ([ee4d3ce](https://github.com/event4u-app/agent-config/commit/ee4d3cedf9f4429450d21ca5badc2ae5c2ecaaed))
|
|
620
|
+
* **agent-user:** drop roadmap references per no-roadmap-references rule ([c8ade8d](https://github.com/event4u-app/agent-config/commit/c8ade8d7c5b495e0e4295aa0cb801e59076ee0b0))
|
|
621
|
+
* **agent-user:** adjust keep-beta-until to fit 90-day window ([801b365](https://github.com/event4u-app/agent-config/commit/801b365117a2d1efb4505e504bdd730e4cbbc217))
|
|
622
|
+
|
|
623
|
+
### Documentation
|
|
624
|
+
|
|
625
|
+
* **persona:** README section + agent-settings legacy-fallback note ([4da7629](https://github.com/event4u-app/agent-config/commit/4da7629f1f0b5a35a64d0a861040ad8639a66ebe))
|
|
626
|
+
* **roadmap:** mark step-3-agent-user-persona phases as in-progress ([f29d3bc](https://github.com/event4u-app/agent-config/commit/f29d3bce2380c0ea9c67e6094540b88d920ed9ff))
|
|
627
|
+
|
|
628
|
+
### Chores
|
|
629
|
+
|
|
630
|
+
* **roadmap:** close out + archive step-3-agent-user-persona ([09c0229](https://github.com/event4u-app/agent-config/commit/09c0229efd67af9cad7b2ca8202f4caa351d028d))
|
|
631
|
+
* **ownership:** regenerate file-ownership-matrix for /agents user ([128890d](https://github.com/event4u-app/agent-config/commit/128890d880584704b4842a398555dd979ae54462))
|
|
632
|
+
* **docs:** bump command count from 109 to 115 ([f8c61b1](https://github.com/event4u-app/agent-config/commit/f8c61b1d0ec48034e0d66e8d32534056ca4aa1f0))
|
|
633
|
+
* **template:** bump agent_config_version pin to 2.14.0 ([fcb885f](https://github.com/event4u-app/agent-config/commit/fcb885fd19bdbca46ef91ec4d5e723cc6c186c6d))
|
|
634
|
+
* **index:** regenerate agents/index.md + docs/catalog.md for /agents user ([56b281d](https://github.com/event4u-app/agent-config/commit/56b281d69960d3e57adbd24b9ec6fd24fc1a5aff))
|
|
635
|
+
* **agent-user:** regenerate compressed sources + claude tool stubs ([f79b6d1](https://github.com/event4u-app/agent-config/commit/f79b6d1cfcf1caccde4a723ad779c65d9ed87198))
|
|
636
|
+
|
|
637
|
+
Tests: 4352 (+12 since 2.14.0)
|
|
638
|
+
|
|
610
639
|
## [2.14.0](https://github.com/event4u-app/agent-config/compare/2.13.0...2.14.0) (2026-05-15)
|
|
611
640
|
|
|
612
641
|
### Features
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Give your AI agents an audit-disciplined orchestration contract — testing, Git
|
|
|
7
7
|
> Your agent picks up the project's stack, runs tests, prepares PRs, fixes CI — and follows your team's coding standards while doing it. Stack-aware skill sets ship for PHP (Laravel · Symfony · Zend/Laminas), JavaScript (Next.js · React · Node), and cross-stack concerns (API · testing · security · observability).
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<strong>210 Skills</strong> · <strong>67 Rules</strong> · <strong>
|
|
10
|
+
<strong>210 Skills</strong> · <strong>67 Rules</strong> · <strong>115 Commands</strong> · <strong>72 Guidelines</strong> · <strong>22 Personas</strong> · <strong>5 Advisors</strong> · <strong>8 AI Tools</strong>
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
---
|
|
@@ -524,7 +524,7 @@ kernel set: [`docs/contracts/kernel-membership.md`](docs/contracts/kernel-member
|
|
|
524
524
|
| [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
|
|
525
525
|
| [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
|
|
526
526
|
|
|
527
|
-
→ [Browse all
|
|
527
|
+
→ [Browse all 115 active commands](.agent-src/commands/)
|
|
528
528
|
|
|
529
529
|
---
|
|
530
530
|
|
|
@@ -556,7 +556,7 @@ slash-commands) 📌 = informational marker only (no auto-discovery
|
|
|
556
556
|
or manual wiring required)
|
|
557
557
|
|
|
558
558
|
> **What this means in practice:** Claude Code gets the full project-scoped
|
|
559
|
-
> package (rules + 210 skills +
|
|
559
|
+
> package (rules + 210 skills + 115 native commands); Augment Code gets the
|
|
560
560
|
> same content but only from a single global install at `~/.augment/`.
|
|
561
561
|
> Cursor, Cline, Windsurf, Gemini CLI, GitHub Copilot, Roo Code, Codex CLI,
|
|
562
562
|
> and Continue.dev only get the **rules** natively; skills and commands are
|
|
@@ -605,6 +605,21 @@ for the per-rule routing.
|
|
|
605
605
|
|
|
606
606
|
---
|
|
607
607
|
|
|
608
|
+
## User persona (`.agent-user.md`)
|
|
609
|
+
|
|
610
|
+
A project-root `.agent-user.md` file captures who the user is — name,
|
|
611
|
+
primary language, role, work style, and a single voice sample — so the
|
|
612
|
+
agent can address them correctly from the first turn. The file is
|
|
613
|
+
gitignored by default, paste-only, and contains zero PII beyond what the
|
|
614
|
+
user explicitly volunteers. Schema is locked v1 in
|
|
615
|
+
[`docs/contracts/agent-user-schema.md`](docs/contracts/agent-user-schema.md).
|
|
616
|
+
|
|
617
|
+
Create it interactively with `/agents user init`. Inspect with
|
|
618
|
+
`/agents user show`. Updates happen only through the explicit
|
|
619
|
+
`review` / `accept` / `update` flow — never silent auto-writes. The
|
|
620
|
+
legacy `personal.user_name` key in `.agent-settings.yml` stays as a
|
|
621
|
+
fallback when `.agent-user.md` is absent.
|
|
622
|
+
|
|
608
623
|
## Core Principles
|
|
609
624
|
|
|
610
625
|
- **Analyze before implementing** — no guessing, no blind edits
|
|
@@ -40,6 +40,10 @@ personal:
|
|
|
40
40
|
open_edited_files: false
|
|
41
41
|
|
|
42
42
|
# User's first name — used to address the user personally
|
|
43
|
+
# NOTE (legacy fallback): Source of truth for user identity is now the
|
|
44
|
+
# project-root `.agent-user.md` file, created via `/agents user init`.
|
|
45
|
+
# This key is retained for backward compatibility; the agent only falls
|
|
46
|
+
# back to it when `.agent-user.md` is absent.
|
|
43
47
|
user_name: ""
|
|
44
48
|
|
|
45
49
|
# rtk (Rust Token Killer) installed for output filtering (true, false)
|
|
@@ -18,6 +18,17 @@
|
|
|
18
18
|
.agent-settings
|
|
19
19
|
.agent-settings.backup.key-value
|
|
20
20
|
|
|
21
|
+
# Agent config — user-persona file (.agent-user.md, written by /agents user init)
|
|
22
|
+
# Contains who the user is and how they want to be addressed. Local-only by
|
|
23
|
+
# default; commit explicitly only via the deferred --shared opt-in.
|
|
24
|
+
# See docs/contracts/agent-user-schema.md.
|
|
25
|
+
.agent-user.md
|
|
26
|
+
.agent-user.md.bak
|
|
27
|
+
|
|
28
|
+
# Agent config — user-persona observation buffer (append-only JSONL,
|
|
29
|
+
# never shared). Feeds /agents user review / accept only.
|
|
30
|
+
.agent-user.observations.jsonl
|
|
31
|
+
|
|
21
32
|
# Agent config — persistent chat history (crash recovery, never commit)
|
|
22
33
|
/agents/.agent-chat-history
|
|
23
34
|
/agents/.agent-chat-history.bak
|
package/docs/architecture.md
CHANGED
|
@@ -143,7 +143,7 @@ note, package-internal path-swap, description budget, and the
|
|
|
143
143
|
|---|---|---|
|
|
144
144
|
| **Skills** | 210 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
|
|
145
145
|
| **Rules** | 67 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
|
|
146
|
-
| **Commands** |
|
|
146
|
+
| **Commands** | 115 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
|
|
147
147
|
| **Guidelines** | 72 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
|
|
148
148
|
| **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
|
|
149
149
|
| **Contexts** | 5 | Shared knowledge about the system itself |
|
package/docs/catalog.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# agent-config — Public Catalog
|
|
2
2
|
|
|
3
|
-
Consumer-facing catalog of all **
|
|
3
|
+
Consumer-facing catalog of all **461 public artefacts** shipped by
|
|
4
4
|
this package. Internal package-maintenance rules and deprecation shims
|
|
5
5
|
are excluded.
|
|
6
6
|
|
|
@@ -291,7 +291,7 @@ are excluded.
|
|
|
291
291
|
| rule | [`user-interaction`](../.agent-src/rules/user-interaction.md) | auto | Asking the user a question, presenting options, or summarizing progress — numbered-options Iron Law, single-recommendation rule, progress indicators |
|
|
292
292
|
| rule | [`verify-before-complete`](../.agent-src/rules/verify-before-complete.md) | always | Verify before completion — run tests and quality tools before claiming done |
|
|
293
293
|
|
|
294
|
-
## Commands (
|
|
294
|
+
## Commands (115)
|
|
295
295
|
|
|
296
296
|
| kind | name | cluster | description |
|
|
297
297
|
|---|---|---|---|
|
|
@@ -300,6 +300,12 @@ are excluded.
|
|
|
300
300
|
| command | [`agents:audit`](../.agent-src/commands/agents/audit.md) | cluster: agents | Audit agent infrastructure — token overhead, rule triggers, AGENTS.md health, Capability-over-Structure adherence, stale references. Read-only, suggest-only, never auto-apply. |
|
|
301
301
|
| command | [`agents:init`](../.agent-src/commands/agents/init.md) | cluster: agents | Initialize the agent layer for a consumer project — creates AGENTS.md and .github/copilot-instructions.md from package templates, auto-detects stack, never leaks other projects' identifiers. |
|
|
302
302
|
| command | [`agents:optimize`](../.agent-src/commands/agents/optimize.md) | cluster: agents | Refactor AGENTS.md to the Thin-Root contract (caps, pointer ratio, capability bullets, emergency-triage) and propagate to tool stubs. Suggest only, never auto-apply. |
|
|
303
|
+
| command | [`agents:user-accept`](../.agent-src/commands/agents/user/accept.md) | cluster: agents | Apply a buffered observation to .agent-user.md after explicit user confirmation; bumps last_updated and drops the applied observations from the buffer. |
|
|
304
|
+
| command | [`agents:user-init`](../.agent-src/commands/agents/user/init.md) | cluster: agents | Interactive interview that creates the project-root .agent-user.md from the locked v1 schema (name, language, role, style, voice_sample). |
|
|
305
|
+
| command | [`agents:user-review`](../.agent-src/commands/agents/user/review.md) | cluster: agents | List buffered observations from .agent-user.observations.jsonl with numbered options to inspect or accept individually. |
|
|
306
|
+
| command | [`agents:user-show`](../.agent-src/commands/agents/user/show.md) | cluster: agents | Read-only render of .agent-user.md — prints the persona summary the host agent loads at session start. |
|
|
307
|
+
| command | [`agents:user-update`](../.agent-src/commands/agents/user/update.md) | cluster: agents | Open .agent-user.md in the user's IDE for manual edit; validates schema and 100-line cap on save. |
|
|
308
|
+
| command | [`agents:user`](../.agent-src/commands/agents/user.md) | cluster: agents | User-persona file (.agent-user.md) — interview, render, and maintain who the user is and how they want to be addressed. |
|
|
303
309
|
| command | [`agents`](../.agent-src/commands/agents.md) | cluster: agents | Agent-layer orchestrator — routes to init, optimize, audit. Covers AGENTS.md and its multi-tool stubs (CLAUDE.md, GEMINI.md, copilot-instructions.md, .cursorrules). |
|
|
304
310
|
| command | [`analyze-reference-repo`](../.agent-src/commands/analyze-reference-repo.md) | | Analyze an external reference repository (competitor, inspiration, peer) and produce a structured comparison + adoption plan for this project. |
|
|
305
311
|
| command | [`bug-fix`](../.agent-src/commands/bug-fix.md) | | Plan and implement a bug fix — based on investigation, with quality checks and test verification |
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: beta
|
|
3
|
+
keep-beta-until: 2026-08-13
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `.agent-user.md` schema (v1)
|
|
7
|
+
|
|
8
|
+
> **Status:** beta — locked for `1.18.0`. Re-evaluate fields after
|
|
9
|
+
> Phase 3 has been in active use for ≥1 week.
|
|
10
|
+
|
|
11
|
+
`.agent-user.md` is a single, project-root, gitignored Markdown file
|
|
12
|
+
that captures who the user is and how they want the agent to address
|
|
13
|
+
them. It is **deliberately minimal in v1** — name, language, role,
|
|
14
|
+
style, and a single voice sample. Everything else is deferred until
|
|
15
|
+
usage signal exists.
|
|
16
|
+
|
|
17
|
+
The file is owned by the user. The agent never edits it without an
|
|
18
|
+
explicit `accept` step.
|
|
19
|
+
|
|
20
|
+
## Locked frontmatter (v1)
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
---
|
|
24
|
+
version: 1
|
|
25
|
+
identity:
|
|
26
|
+
name: "Mathias" # required — full name or how the user wants to be addressed
|
|
27
|
+
nickname: "Matze" # optional — preferred shorthand (used by default in chat)
|
|
28
|
+
language: "de" # required — BCP-47-ish primary language ("de", "en", "fr", ...)
|
|
29
|
+
role: "founder/engineer" # required — short free-form role label
|
|
30
|
+
style:
|
|
31
|
+
formality: "informal" # informal | formal
|
|
32
|
+
pace: "pragmatic" # pragmatic | thorough | rapid
|
|
33
|
+
voice_sample: | # required — one paste of the user's typical writing
|
|
34
|
+
Mach das einfach. Wenn unklar, frag im Council.
|
|
35
|
+
last_updated: "2026-05-15" # YYYY-MM-DD — bumped on every accepted change
|
|
36
|
+
---
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
After the frontmatter, the body is a single freeform **`# Notes`**
|
|
40
|
+
section. Hard cap: **100 lines** total file size (including
|
|
41
|
+
frontmatter, body, and the Notes section). The 100-line cap is
|
|
42
|
+
enforced by `/agents user accept` and `/agents user update`.
|
|
43
|
+
|
|
44
|
+
## Field reference
|
|
45
|
+
|
|
46
|
+
| Field | Required | Purpose |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `version` | yes | Schema version. v1 is the only valid value today. |
|
|
49
|
+
| `identity.name` | yes | Default address form. |
|
|
50
|
+
| `identity.nickname` | no | Preferred shorthand — agent uses this by default in chat replies when set. |
|
|
51
|
+
| `language` | yes | Primary language; the agent mirrors per [`language-and-tone`](../../.agent-src/rules/language-and-tone.md). |
|
|
52
|
+
| `role` | yes | Short free-form label — drives reviewer voice selection and persona pairing. |
|
|
53
|
+
| `style.formality` | yes | `informal` (Du / first-name) or `formal` (Sie / full name). |
|
|
54
|
+
| `style.pace` | yes | `pragmatic` (default), `thorough` (more verification), or `rapid` (shorter replies). |
|
|
55
|
+
| `voice_sample` | yes | One representative paste — anchors mirror-back and tone calibration. |
|
|
56
|
+
| `last_updated` | yes | ISO date, bumped on every accept. |
|
|
57
|
+
|
|
58
|
+
## Explicit exclusions
|
|
59
|
+
|
|
60
|
+
The agent NEVER writes any of the following to `.agent-user.md`, even
|
|
61
|
+
with the user's explicit consent — they violate the privacy floor:
|
|
62
|
+
|
|
63
|
+
- Credentials, API keys, passwords, tokens.
|
|
64
|
+
- Third-party names (children, partners, colleagues, clients).
|
|
65
|
+
- Third-party birthdays or dates.
|
|
66
|
+
- Financial figures (salary, revenue, net worth, runway numbers).
|
|
67
|
+
- Health, legal, or therapy status.
|
|
68
|
+
- Demographics (relationship status, family context, age, location) —
|
|
69
|
+
**deferred to v2** pending usage data per the re-validation gate.
|
|
70
|
+
- LinkedIn URL or any other external-source identifier — **deferred**
|
|
71
|
+
until a written host-agent-fetch contract and a "what counts as a
|
|
72
|
+
public profile field" privacy floor exist.
|
|
73
|
+
|
|
74
|
+
## Loader contract
|
|
75
|
+
|
|
76
|
+
Host agents read `.agent-user.md` at session start, in this priority
|
|
77
|
+
order:
|
|
78
|
+
|
|
79
|
+
1. `.agent-user.md` at project root (this contract).
|
|
80
|
+
2. `personal.user_name` in `.agent-settings.yml` (legacy fallback).
|
|
81
|
+
3. Nothing — agent uses generic address forms.
|
|
82
|
+
|
|
83
|
+
The host agent surfaces the user's `identity.nickname` (or `name` if
|
|
84
|
+
unset) on first reply when the file is present.
|
|
85
|
+
|
|
86
|
+
## Determinism floor
|
|
87
|
+
|
|
88
|
+
The `agent-config` package itself contains **zero network code**.
|
|
89
|
+
External enrichment (e.g. LinkedIn profile fetch) was rejected on
|
|
90
|
+
determinism / ToS / test-impossibility grounds, and the host-agent
|
|
91
|
+
delegation workaround was additionally rejected on contract-floor
|
|
92
|
+
grounds (AI Council convergence — Anthropic, OpenAI, Google · 2026-05-14).
|
|
93
|
+
v1 is paste-only via `/agents user init`.
|
|
94
|
+
|
|
95
|
+
## Staleness
|
|
96
|
+
|
|
97
|
+
When `last_updated` is older than 90 days, any `/agents user *`
|
|
98
|
+
command surfaces a one-line warning (not a blocker):
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
⚠️ .agent-user.md was last updated YYYY-MM-DD (>90 days ago). Run /agents user review or /agents user update.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Commands
|
|
105
|
+
|
|
106
|
+
| Command | Role |
|
|
107
|
+
|---|---|
|
|
108
|
+
| `/agents user init` | Creates the file from a short interview. Refuses overwrite without `--force`. |
|
|
109
|
+
| `/agents user show` | Read-only render. (Phase 2.) |
|
|
110
|
+
| `/agents user review` | List buffered observations. (Phase 3.) |
|
|
111
|
+
| `/agents user accept` | Apply selected observations; bumps `last_updated`. (Phase 3.) |
|
|
112
|
+
| `/agents user update` | Open in IDE for manual edit; validates on save. (Phase 3.) |
|
|
113
|
+
|
|
114
|
+
See [`command-clusters.md`](command-clusters.md) for the locked
|
|
115
|
+
cluster registration.
|
|
116
|
+
|
|
117
|
+
## Observation buffer
|
|
118
|
+
|
|
119
|
+
Agents MAY append observations about the user (preferred reply style,
|
|
120
|
+
detected language drift, repeated correction patterns) to a separate
|
|
121
|
+
JSONL buffer at the project root:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
.agent-user.observations.jsonl
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
The buffer is **append-only**, gitignored, and never read by the
|
|
128
|
+
host-agent loader directly. It only feeds `/agents user review` →
|
|
129
|
+
`/agents user accept`.
|
|
130
|
+
|
|
131
|
+
Each line is a single JSON object:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{"ts":"2026-05-15T10:23:00Z","field":"style.pace","suggest":"rapid","source":"chat","evidence":"user said 'mach kürzer' 3× this session"}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Allowed `field` values mirror the schema (`identity.nickname`,
|
|
138
|
+
`language`, `role`, `style.formality`, `style.pace`, `voice_sample`,
|
|
139
|
+
`notes`). Anything outside that set is dropped on read.
|
|
140
|
+
|
|
141
|
+
Privacy floor applies on write — never buffer credentials, third-party
|
|
142
|
+
PII, financial figures, or health/legal status. The same
|
|
143
|
+
[exclusions list](#explicit-exclusions) governs both `.agent-user.md`
|
|
144
|
+
and the buffer.
|
|
145
|
+
|
|
146
|
+
## Gitignore
|
|
147
|
+
|
|
148
|
+
`.agent-user.md` and `.agent-user.observations.jsonl` are added to the
|
|
149
|
+
package-managed `.gitignore` block
|
|
150
|
+
([`config/gitignore-block.txt`](../../config/gitignore-block.txt)) and
|
|
151
|
+
ignored by default. A `--shared` opt-in to commit `.agent-user.md` is
|
|
152
|
+
deferred — only the doc note lands in v1. The observation buffer is
|
|
153
|
+
**never** shared.
|
|
154
|
+
|
|
155
|
+
## Example
|
|
156
|
+
|
|
157
|
+
A complete, paste-ready fixture lives at
|
|
158
|
+
[`docs/examples/agent-user.example.md`](../examples/agent-user.example.md).
|
|
159
|
+
Copy it to the project root as `.agent-user.md` and edit, or run
|
|
160
|
+
`/agents user init` for the interactive flow.
|
|
161
|
+
|
|
162
|
+
## See also
|
|
163
|
+
|
|
164
|
+
- [`language-and-tone`](../../.agent-src/rules/language-and-tone.md) — language-mirroring rule the loader feeds.
|
|
165
|
+
- [`agents-md-thin-root`](../../.agent-src/skills/agents-md-thin-root/SKILL.md) — Thin-Root contract that this file complements (user-state vs project-state).
|
|
@@ -32,7 +32,7 @@ column 1 of this table.
|
|
|
32
32
|
| `optimize` | 1 | `agents-dir` · `augmentignore` · `rtk` · `skills` | `optimize-augmentignore` · `optimize-rtk-filters` · `optimize-skills` · former `/optimize agents` and `/optimize agents-md` moved to the `/agents` file-family cluster 2026-05-09; `/agents prepare/audit/cleanup` collapsed into the single `/optimize agents-dir` (flags or wizard) per the agent-doc consolidation |
|
|
33
33
|
| `feature` | 1 | `explore` · `plan` · `refactor` · `roadmap` · `dev` | `feature-explore` · `feature-plan` · `feature-refactor` · `feature-roadmap` · `feature-dev` |
|
|
34
34
|
| `chat-history` | 2 | `show` · `import` · `learn` | `chat-history` (legacy status) — `resume` / `clear` / `checkpoint` removed in `road-to-chat-history-hook-only` (auto-adopt + structural hooks); `import` (verbatim cross-session render) and `learn` (project-improving learning extraction) added in the v4 stateless schema |
|
|
35
|
-
| `agents` | 2 | `init` · `optimize` · `audit` | AGENTS.md file family (high-frequency) — repurposed 2026-05-09: `init` (was `/copilot-agents init`) · `optimize` (merger of `/optimize agents-md` + `/copilot-agents optimize`) · `audit` (was `/optimize agents`, collapses old `audit` + `check` verbs); legacy folder ops (`prepare` / `cleanup` / folder-`audit`) moved to `/optimize agents-dir` |
|
|
35
|
+
| `agents` | 2 | `init` · `optimize` · `audit` · `user` | AGENTS.md file family (high-frequency) — repurposed 2026-05-09: `init` (was `/copilot-agents init`) · `optimize` (merger of `/optimize agents-md` + `/copilot-agents optimize`) · `audit` (was `/optimize agents`, collapses old `audit` + `check` verbs); legacy folder ops (`prepare` / `cleanup` / folder-`audit`) moved to `/optimize agents-dir`; `user` sub-cluster added 2026-05-15 — manages the project-root `.agent-user.md` persona file (sub-sub-commands: `init` · `show` · `review` · `accept` · `update`) per [`agent-user-schema`](agent-user-schema.md) |
|
|
36
36
|
| `memory` | 2 | `add` · `load` · `promote` · `propose` · `mine-session` · `learn-low-impact` | `memory-add` · `memory-full` · `memory-promote` · `propose-memory`; `mine-session` added 2026-05-10 — manual transcript-mining sub-command from `road-to-dream-skill-adoption.md`, opt-in via `--confirm-transcript-access` per invocation; `learn-low-impact` added 2026-05-15 — upstreams `## Validated` entries from `agents/low-impact-decisions.md` to the package seed via a DRAFT PR (re-runs the privacy-floor redactor as a second gate per `low-impact-corpus-privacy-floor`) |
|
|
37
37
|
| `roadmap` | 2 | `create` · `ai-council` · `process-step` · `process-phase` · `process-full` | `roadmap-create` · `roadmap-execute` (replaced — autonomous, no per-step gate; `process-phase` is the default execution scope); `ai-council` added 2026-05-07 — wraps `/council default` with `--input-mode roadmap --depth deep` |
|
|
38
38
|
| `module` | 2 | `create` · `explore` | `module-create` · `module-explore` |
|
|
@@ -39,6 +39,42 @@
|
|
|
39
39
|
"load_context": [],
|
|
40
40
|
"load_context_eager": []
|
|
41
41
|
},
|
|
42
|
+
".agent-src.uncompressed/commands/agents/user.md": {
|
|
43
|
+
"kind": "command",
|
|
44
|
+
"rule_type": "orchestrator",
|
|
45
|
+
"load_context": [],
|
|
46
|
+
"load_context_eager": []
|
|
47
|
+
},
|
|
48
|
+
".agent-src.uncompressed/commands/agents/user/accept.md": {
|
|
49
|
+
"kind": "command",
|
|
50
|
+
"rule_type": null,
|
|
51
|
+
"load_context": [],
|
|
52
|
+
"load_context_eager": []
|
|
53
|
+
},
|
|
54
|
+
".agent-src.uncompressed/commands/agents/user/init.md": {
|
|
55
|
+
"kind": "command",
|
|
56
|
+
"rule_type": null,
|
|
57
|
+
"load_context": [],
|
|
58
|
+
"load_context_eager": []
|
|
59
|
+
},
|
|
60
|
+
".agent-src.uncompressed/commands/agents/user/review.md": {
|
|
61
|
+
"kind": "command",
|
|
62
|
+
"rule_type": null,
|
|
63
|
+
"load_context": [],
|
|
64
|
+
"load_context_eager": []
|
|
65
|
+
},
|
|
66
|
+
".agent-src.uncompressed/commands/agents/user/show.md": {
|
|
67
|
+
"kind": "command",
|
|
68
|
+
"rule_type": null,
|
|
69
|
+
"load_context": [],
|
|
70
|
+
"load_context_eager": []
|
|
71
|
+
},
|
|
72
|
+
".agent-src.uncompressed/commands/agents/user/update.md": {
|
|
73
|
+
"kind": "command",
|
|
74
|
+
"rule_type": null,
|
|
75
|
+
"load_context": [],
|
|
76
|
+
"load_context_eager": []
|
|
77
|
+
},
|
|
42
78
|
".agent-src.uncompressed/commands/analyze-reference-repo.md": {
|
|
43
79
|
"kind": "command",
|
|
44
80
|
"rule_type": null,
|
|
@@ -2902,6 +2938,160 @@
|
|
|
2902
2938
|
"via": "body_link",
|
|
2903
2939
|
"depth": 1
|
|
2904
2940
|
},
|
|
2941
|
+
{
|
|
2942
|
+
"source": ".agent-src.uncompressed/commands/agents/user.md",
|
|
2943
|
+
"target": ".agent-src.uncompressed/commands/agents/init.md",
|
|
2944
|
+
"type": "READ_ONLY",
|
|
2945
|
+
"via": "body_link",
|
|
2946
|
+
"depth": 1
|
|
2947
|
+
},
|
|
2948
|
+
{
|
|
2949
|
+
"source": ".agent-src.uncompressed/commands/agents/user.md",
|
|
2950
|
+
"target": ".agent-src.uncompressed/commands/agents/user.md",
|
|
2951
|
+
"type": "WRITE",
|
|
2952
|
+
"via": "self",
|
|
2953
|
+
"depth": 0
|
|
2954
|
+
},
|
|
2955
|
+
{
|
|
2956
|
+
"source": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
2957
|
+
"target": ".agent-src.uncompressed/commands/agents/user.md",
|
|
2958
|
+
"type": "READ_ONLY",
|
|
2959
|
+
"via": "body_link",
|
|
2960
|
+
"depth": 1
|
|
2961
|
+
},
|
|
2962
|
+
{
|
|
2963
|
+
"source": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
2964
|
+
"target": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
2965
|
+
"type": "WRITE",
|
|
2966
|
+
"via": "self",
|
|
2967
|
+
"depth": 0
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
"source": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
2971
|
+
"target": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
2972
|
+
"type": "READ_ONLY",
|
|
2973
|
+
"via": "body_link",
|
|
2974
|
+
"depth": 1
|
|
2975
|
+
},
|
|
2976
|
+
{
|
|
2977
|
+
"source": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
2978
|
+
"target": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
2979
|
+
"type": "READ_ONLY",
|
|
2980
|
+
"via": "body_link",
|
|
2981
|
+
"depth": 1
|
|
2982
|
+
},
|
|
2983
|
+
{
|
|
2984
|
+
"source": ".agent-src.uncompressed/commands/agents/user/init.md",
|
|
2985
|
+
"target": ".agent-src.uncompressed/commands/agents/user.md",
|
|
2986
|
+
"type": "READ_ONLY",
|
|
2987
|
+
"via": "body_link",
|
|
2988
|
+
"depth": 1
|
|
2989
|
+
},
|
|
2990
|
+
{
|
|
2991
|
+
"source": ".agent-src.uncompressed/commands/agents/user/init.md",
|
|
2992
|
+
"target": ".agent-src.uncompressed/commands/agents/user/init.md",
|
|
2993
|
+
"type": "WRITE",
|
|
2994
|
+
"via": "self",
|
|
2995
|
+
"depth": 0
|
|
2996
|
+
},
|
|
2997
|
+
{
|
|
2998
|
+
"source": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
2999
|
+
"target": ".agent-src.uncompressed/commands/agents/user.md",
|
|
3000
|
+
"type": "READ_ONLY",
|
|
3001
|
+
"via": "body_link",
|
|
3002
|
+
"depth": 1
|
|
3003
|
+
},
|
|
3004
|
+
{
|
|
3005
|
+
"source": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
3006
|
+
"target": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
3007
|
+
"type": "READ_ONLY",
|
|
3008
|
+
"via": "body_link",
|
|
3009
|
+
"depth": 1
|
|
3010
|
+
},
|
|
3011
|
+
{
|
|
3012
|
+
"source": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
3013
|
+
"target": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
3014
|
+
"type": "WRITE",
|
|
3015
|
+
"via": "self",
|
|
3016
|
+
"depth": 0
|
|
3017
|
+
},
|
|
3018
|
+
{
|
|
3019
|
+
"source": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
3020
|
+
"target": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3021
|
+
"type": "READ_ONLY",
|
|
3022
|
+
"via": "body_link",
|
|
3023
|
+
"depth": 1
|
|
3024
|
+
},
|
|
3025
|
+
{
|
|
3026
|
+
"source": ".agent-src.uncompressed/commands/agents/user/show.md",
|
|
3027
|
+
"target": ".agent-src.uncompressed/commands/agents/user.md",
|
|
3028
|
+
"type": "READ_ONLY",
|
|
3029
|
+
"via": "body_link",
|
|
3030
|
+
"depth": 1
|
|
3031
|
+
},
|
|
3032
|
+
{
|
|
3033
|
+
"source": ".agent-src.uncompressed/commands/agents/user/show.md",
|
|
3034
|
+
"target": ".agent-src.uncompressed/commands/agents/user/init.md",
|
|
3035
|
+
"type": "READ_ONLY",
|
|
3036
|
+
"via": "body_link",
|
|
3037
|
+
"depth": 1
|
|
3038
|
+
},
|
|
3039
|
+
{
|
|
3040
|
+
"source": ".agent-src.uncompressed/commands/agents/user/show.md",
|
|
3041
|
+
"target": ".agent-src.uncompressed/commands/agents/user/show.md",
|
|
3042
|
+
"type": "WRITE",
|
|
3043
|
+
"via": "self",
|
|
3044
|
+
"depth": 0
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
"source": ".agent-src.uncompressed/commands/agents/user/show.md",
|
|
3048
|
+
"target": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3049
|
+
"type": "READ_ONLY",
|
|
3050
|
+
"via": "body_link",
|
|
3051
|
+
"depth": 1
|
|
3052
|
+
},
|
|
3053
|
+
{
|
|
3054
|
+
"source": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3055
|
+
"target": ".agent-src.uncompressed/commands/agents/user.md",
|
|
3056
|
+
"type": "READ_ONLY",
|
|
3057
|
+
"via": "body_link",
|
|
3058
|
+
"depth": 1
|
|
3059
|
+
},
|
|
3060
|
+
{
|
|
3061
|
+
"source": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3062
|
+
"target": ".agent-src.uncompressed/commands/agents/user/accept.md",
|
|
3063
|
+
"type": "READ_ONLY",
|
|
3064
|
+
"via": "body_link",
|
|
3065
|
+
"depth": 1
|
|
3066
|
+
},
|
|
3067
|
+
{
|
|
3068
|
+
"source": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3069
|
+
"target": ".agent-src.uncompressed/commands/agents/user/init.md",
|
|
3070
|
+
"type": "READ_ONLY",
|
|
3071
|
+
"via": "body_link",
|
|
3072
|
+
"depth": 1
|
|
3073
|
+
},
|
|
3074
|
+
{
|
|
3075
|
+
"source": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3076
|
+
"target": ".agent-src.uncompressed/commands/agents/user/review.md",
|
|
3077
|
+
"type": "READ_ONLY",
|
|
3078
|
+
"via": "body_link",
|
|
3079
|
+
"depth": 1
|
|
3080
|
+
},
|
|
3081
|
+
{
|
|
3082
|
+
"source": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3083
|
+
"target": ".agent-src.uncompressed/commands/agents/user/show.md",
|
|
3084
|
+
"type": "READ_ONLY",
|
|
3085
|
+
"via": "body_link",
|
|
3086
|
+
"depth": 1
|
|
3087
|
+
},
|
|
3088
|
+
{
|
|
3089
|
+
"source": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3090
|
+
"target": ".agent-src.uncompressed/commands/agents/user/update.md",
|
|
3091
|
+
"type": "WRITE",
|
|
3092
|
+
"via": "self",
|
|
3093
|
+
"depth": 0
|
|
3094
|
+
},
|
|
2905
3095
|
{
|
|
2906
3096
|
"source": ".agent-src.uncompressed/commands/analyze-reference-repo.md",
|
|
2907
3097
|
"target": ".agent-src.uncompressed/commands/analyze-reference-repo.md",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1
|
|
3
|
+
identity:
|
|
4
|
+
name: "Mathias"
|
|
5
|
+
nickname: "Matze"
|
|
6
|
+
language: "de"
|
|
7
|
+
role: "founder/engineer"
|
|
8
|
+
style:
|
|
9
|
+
formality: "informal"
|
|
10
|
+
pace: "pragmatic"
|
|
11
|
+
voice_sample: |
|
|
12
|
+
Mach das einfach. Wenn unklar, frag im Council. Tokenverbrauch ist ok,
|
|
13
|
+
aber stell mir keine Fragen — entscheide oder frag die AIs.
|
|
14
|
+
last_updated: "2026-05-15"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Notes
|
|
18
|
+
|
|
19
|
+
Pragmatic shipper. Prefers terse replies, real diffs, and named
|
|
20
|
+
trade-offs over hedged options. Council-first for anything that looks
|
|
21
|
+
like a contract decision.
|
package/docs/getting-started.md
CHANGED
|
@@ -146,7 +146,7 @@ Your agent now understands slash commands:
|
|
|
146
146
|
| `/quality-fix` | Run and fix all quality checks |
|
|
147
147
|
| `/chat-history` | Inspect the persistent chat-history log (read-only `show`) |
|
|
148
148
|
|
|
149
|
-
→ [Browse all
|
|
149
|
+
→ [Browse all 115 active commands](../.agent-src/commands/)
|
|
150
150
|
|
|
151
151
|
---
|
|
152
152
|
|
package/package.json
CHANGED