@olegkoval/agent-skills 1.38.1 → 1.38.3
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 +2 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/SKILL.md +2 -1
- package/docs/agent-context-store.md +92 -0
- package/docs/assets/context-store-card.html +377 -0
- package/docs/assets/context-store-card.png +0 -0
- package/package.json +1 -1
- package/plugins/olko-apple-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-creative/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-garmin-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-git-tools/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/skills/lekker-review/SKILL.md +2 -1
- package/plugins/olko-obsidian/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-product/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-reflection/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-release/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-skill-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-web-ops/.claude-plugin/plugin.json +1 -1
package/README.md
CHANGED
|
@@ -341,6 +341,8 @@ When adding or changing a skill:
|
|
|
341
341
|
|
|
342
342
|
### Shared context store
|
|
343
343
|
|
|
344
|
+

|
|
345
|
+
|
|
344
346
|
`retro-analysis` and `shared-knowledge-artifact` share one private GitHub repository,
|
|
345
347
|
resolved through the `context-repo` skill the first time either one runs. It finds a
|
|
346
348
|
store before it creates one: private repositories are probed for a root `ledger.json`
|
|
@@ -23,7 +23,8 @@ description: >
|
|
|
23
23
|
form.
|
|
24
24
|
license: MIT
|
|
25
25
|
allowed-tools: Bash, Read, Write, Edit, Agent, Workflow, AskUserQuestion, Artifact
|
|
26
|
-
compatibility:
|
|
26
|
+
compatibility: >
|
|
27
|
+
Claude Code only. Requires the Workflow tool (multi-agent orchestration)
|
|
27
28
|
and the Artifact tool (living review page): other Agent Skills-compatible tools
|
|
28
29
|
without an equivalent to Workflow cannot run the review/verify/critic pipeline this
|
|
29
30
|
skill depends on. Requires git and gh (GitHub CLI) authenticated.
|
|
@@ -25,6 +25,98 @@ time an agent has no access to the Artifact page that came before it. A durable,
|
|
|
25
25
|
cross-machine store is what makes "compare this retro to the last one" or "what have
|
|
26
26
|
other agents already learned" answerable at all.
|
|
27
27
|
|
|
28
|
+
## How it works
|
|
29
|
+
|
|
30
|
+
The resolver searches for an existing private store before offering creation. The
|
|
31
|
+
diagram includes the silent reuse paths, the explicit consent boundary, and every
|
|
32
|
+
terminal status the caller can receive.
|
|
33
|
+
|
|
34
|
+
```mermaid
|
|
35
|
+
flowchart TD
|
|
36
|
+
start["Caller asks for the store"] --> pointer{"Normal pointer?"}
|
|
37
|
+
pointer -->|"Yes"| clone{"Local clone exists?"}
|
|
38
|
+
clone -->|"Yes"| visibility{"Fresh remote read is private?"}
|
|
39
|
+
visibility -->|"Yes"| ready1["READY: reuse, no prompt"]
|
|
40
|
+
visibility -->|"Public"| discover["Exhaustive private-store discovery"]
|
|
41
|
+
visibility -->|"Not found or access denied"| discover
|
|
42
|
+
visibility -->|"Network, API, or rate limit after retry"| blocked1["BLOCKED: visibility unknown"]
|
|
43
|
+
clone -->|"No"| remote2{"Remote read succeeds?"}
|
|
44
|
+
remote2 -->|"Private"| reclone["Clone to the fixed path"]
|
|
45
|
+
reclone --> verifyclone{"Fresh visibility read is private?"}
|
|
46
|
+
verifyclone -->|"Yes"| ready2["READY: adopted and re-cloned"]
|
|
47
|
+
verifyclone -->|"No"| blocked2["BLOCKED: verification failed"]
|
|
48
|
+
remote2 -->|"Network or API failure"| blocked3["BLOCKED: cannot verify or clone"]
|
|
49
|
+
remote2 -->|"Not found, access denied, or public"| discover
|
|
50
|
+
|
|
51
|
+
pointer -->|"No, or stale"| refusal{"Refusal pointer?"}
|
|
52
|
+
refusal -->|"Yes, no explicit resume"| local1["LOCAL_ONLY: prior refusal"]
|
|
53
|
+
refusal -->|"No, or explicit resume"| discover
|
|
54
|
+
discover --> probe{"All private repositories probed?"}
|
|
55
|
+
probe -->|"No: retry still failed"| blocked4["BLOCKED: discovery incomplete"]
|
|
56
|
+
probe -->|"Exactly one private match"| adopt["Adopt matching store"]
|
|
57
|
+
probe -->|"Several matches"| choose["User chooses; no clone or pointer write yet"]
|
|
58
|
+
choose --> adopt
|
|
59
|
+
probe -->|"No matches"| preconditions["Check gh and repo authentication"]
|
|
60
|
+
adopt --> adoptread["Fresh private read, then clone and read again"]
|
|
61
|
+
adoptread --> ready3["READY: existing store adopted"]
|
|
62
|
+
preconditions -->|"Missing or unauthenticated"| blocked5["BLOCKED: gh auth login -s repo"]
|
|
63
|
+
preconditions -->|"Pass"| prompt["Ask once: owner, name, private, exact paths"]
|
|
64
|
+
prompt -->|"n"| local2["LOCAL_ONLY: this run only"]
|
|
65
|
+
prompt -->|"never"| local3["LOCAL_ONLY: refusal pointer recorded"]
|
|
66
|
+
prompt -->|"y"| create["Create private repo, clone, seed, commit, push"]
|
|
67
|
+
create --> verify{"Fresh remote and local reads agree?"}
|
|
68
|
+
verify -->|"Yes"| writepointer["Write normal pointer"]
|
|
69
|
+
writepointer --> created["CREATED: verified receipt"]
|
|
70
|
+
verify -->|"No"| blocked6["BLOCKED: no pointer written"]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
On a normal first run, the caller waits while `context-repo` completes discovery,
|
|
74
|
+
checks prerequisites, asks once, creates the private store, and verifies it from
|
|
75
|
+
fresh reads before returning a receipt.
|
|
76
|
+
|
|
77
|
+
```mermaid
|
|
78
|
+
sequenceDiagram
|
|
79
|
+
participant Caller as Calling skill
|
|
80
|
+
participant Context as context-repo
|
|
81
|
+
participant User as User
|
|
82
|
+
participant CLI as gh and git
|
|
83
|
+
participant Remote as GitHub
|
|
84
|
+
|
|
85
|
+
Caller->>Context: Resolve durable store
|
|
86
|
+
Context->>CLI: List private owner repositories
|
|
87
|
+
CLI->>Remote: Probe each repository tree
|
|
88
|
+
Remote-->>CLI: No matching ledger + retro layout
|
|
89
|
+
CLI-->>Context: Exhaustive discovery complete
|
|
90
|
+
Context->>CLI: gh --version and gh auth status
|
|
91
|
+
CLI-->>Context: Preconditions pass
|
|
92
|
+
Context->>CLI: gh api user -q .login
|
|
93
|
+
CLI-->>Context: Authenticated owner
|
|
94
|
+
Context->>User: Ask once before creation
|
|
95
|
+
Note over Context,User: Private store, exact pointer and clone paths,<br/>README.md, AGENTS.md, .gitignore, ledger.json, retro/
|
|
96
|
+
User-->>Context: y
|
|
97
|
+
Context->>CLI: gh repo create owner/name --private
|
|
98
|
+
CLI->>Remote: Create repository
|
|
99
|
+
Remote-->>CLI: Created
|
|
100
|
+
Context->>CLI: git clone and seed the store
|
|
101
|
+
CLI-->>Context: Local initialized tree
|
|
102
|
+
Context->>CLI: git add, commit, and push
|
|
103
|
+
CLI->>Remote: Push initialization commit
|
|
104
|
+
Note over Context,Remote: A successful-looking push is not proof
|
|
105
|
+
Context->>CLI: gh repo view owner/name --json nameWithOwner,visibility
|
|
106
|
+
CLI->>Remote: Fresh visibility read
|
|
107
|
+
Remote-->>CLI: PRIVATE
|
|
108
|
+
Context->>CLI: git -C clone rev-parse HEAD
|
|
109
|
+
CLI-->>Context: Fresh local SHA
|
|
110
|
+
Context->>Context: Confirm both reads and write the pointer
|
|
111
|
+
Context-->>Caller: CREATED with repo, clone, and init SHA
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
The callers then own distinct content in the same clone: `retro-analysis` writes
|
|
115
|
+
one uniquely named Markdown snapshot under `retro/`, while
|
|
116
|
+
`shared-knowledge-artifact` appends notes to the root `ledger.json` and treats its
|
|
117
|
+
Artifact page as the user-facing view. Both follow the store's lease, pull-before-
|
|
118
|
+
push, validation, append-only, and no-force-push rules.
|
|
119
|
+
|
|
28
120
|
## Repository layout
|
|
29
121
|
|
|
30
122
|
```text
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
<title>Agent Context Store</title>
|
|
2
|
+
<link href="https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700&family=JetBrains+Mono:wght@500;600;700&display=swap" rel="stylesheet">
|
|
3
|
+
<style>
|
|
4
|
+
:root {
|
|
5
|
+
--page-ground: #0A0A0A;
|
|
6
|
+
--surface: #141414;
|
|
7
|
+
--border: #262626;
|
|
8
|
+
--accent: #FFC53D;
|
|
9
|
+
--heading: #F5F5F5;
|
|
10
|
+
--body: #A3A3A3;
|
|
11
|
+
--metadata: #6B6B6B;
|
|
12
|
+
--rose: #B56576;
|
|
13
|
+
--green: #5C8A63;
|
|
14
|
+
--ink-dark: #141414;
|
|
15
|
+
--transparent: transparent;
|
|
16
|
+
--warm-glow: rgb(255 197 61 / 5%);
|
|
17
|
+
--mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
|
|
18
|
+
--sans: "Figtree", "Avenir Next", Avenir, "Segoe UI", sans-serif;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
* {
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
margin: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
body {
|
|
27
|
+
min-height: 100vh;
|
|
28
|
+
display: grid;
|
|
29
|
+
place-items: center;
|
|
30
|
+
padding: 28px;
|
|
31
|
+
overflow-x: hidden;
|
|
32
|
+
background: radial-gradient(circle at 4% 4%, var(--warm-glow), var(--transparent) 34%), var(--page-ground);
|
|
33
|
+
color: var(--body);
|
|
34
|
+
font-family: var(--sans);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.frame {
|
|
38
|
+
width: min(1500px, calc(100vw - 56px));
|
|
39
|
+
max-width: 1500px;
|
|
40
|
+
/* A 16:9 floor, not a clamp. A hard aspect-ratio plus overflow:hidden made the
|
|
41
|
+
cards paint over the state strip whenever the copy needed one more line. */
|
|
42
|
+
min-height: calc(min(1500px, 100vw - 56px) * 9 / 16);
|
|
43
|
+
display: grid;
|
|
44
|
+
grid-template-rows: auto auto auto auto auto;
|
|
45
|
+
gap: 13px;
|
|
46
|
+
padding: 24px 30px 20px;
|
|
47
|
+
background: var(--surface);
|
|
48
|
+
border: 1px solid var(--border);
|
|
49
|
+
border-radius: 10px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.title-band,
|
|
53
|
+
.skill-card,
|
|
54
|
+
.state-strip,
|
|
55
|
+
.closing-band,
|
|
56
|
+
.state-copy,
|
|
57
|
+
.state-item {
|
|
58
|
+
display: flex;
|
|
59
|
+
flex-direction: column;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.title-band {
|
|
63
|
+
gap: 5px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
h1 {
|
|
67
|
+
color: var(--accent);
|
|
68
|
+
font-family: var(--mono);
|
|
69
|
+
font-size: 1.95rem;
|
|
70
|
+
font-weight: 700;
|
|
71
|
+
letter-spacing: 0.11em;
|
|
72
|
+
line-height: 1.08;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.subtitle {
|
|
76
|
+
color: var(--body);
|
|
77
|
+
font-size: 0.95rem;
|
|
78
|
+
line-height: 1.35;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.pipeline {
|
|
82
|
+
display: grid;
|
|
83
|
+
grid-template-columns: repeat(4, minmax(0, 1fr) 28px) minmax(0, 1fr);
|
|
84
|
+
align-items: center;
|
|
85
|
+
gap: 8px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.pipeline-step {
|
|
89
|
+
display: grid;
|
|
90
|
+
place-items: center;
|
|
91
|
+
min-height: 38px;
|
|
92
|
+
padding: 7px 10px;
|
|
93
|
+
border: 1px solid var(--border);
|
|
94
|
+
border-radius: 7px;
|
|
95
|
+
color: var(--body);
|
|
96
|
+
font-family: var(--mono);
|
|
97
|
+
font-size: 0.76rem;
|
|
98
|
+
font-weight: 600;
|
|
99
|
+
line-height: 1.15;
|
|
100
|
+
text-align: center;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.pipeline-step.highlight {
|
|
104
|
+
border-color: var(--accent);
|
|
105
|
+
color: var(--accent);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.arrow {
|
|
109
|
+
color: var(--metadata);
|
|
110
|
+
font-family: var(--mono);
|
|
111
|
+
font-size: 1rem;
|
|
112
|
+
text-align: center;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.cards {
|
|
116
|
+
display: grid;
|
|
117
|
+
align-content: start;
|
|
118
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
119
|
+
gap: 16px;
|
|
120
|
+
min-height: 0;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.skill-card {
|
|
124
|
+
gap: 9px;
|
|
125
|
+
min-width: 0;
|
|
126
|
+
padding: 16px 17px 15px;
|
|
127
|
+
border: 1px solid var(--border);
|
|
128
|
+
border-radius: 9px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.eyebrow,
|
|
132
|
+
.strip-label {
|
|
133
|
+
color: var(--accent);
|
|
134
|
+
font-family: var(--mono);
|
|
135
|
+
font-size: 0.72rem;
|
|
136
|
+
font-weight: 700;
|
|
137
|
+
font-variant-numeric: tabular-nums;
|
|
138
|
+
letter-spacing: 0.14em;
|
|
139
|
+
line-height: 1.2;
|
|
140
|
+
text-transform: uppercase;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.skill-card h2 {
|
|
144
|
+
color: var(--heading);
|
|
145
|
+
font-size: 1.16rem;
|
|
146
|
+
font-weight: 600;
|
|
147
|
+
line-height: 1.2;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.divider {
|
|
151
|
+
height: 1px;
|
|
152
|
+
background: var(--border);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.card-copy {
|
|
156
|
+
display: flex;
|
|
157
|
+
flex-direction: column;
|
|
158
|
+
gap: 7px;
|
|
159
|
+
color: var(--body);
|
|
160
|
+
font-size: 0.87rem;
|
|
161
|
+
line-height: 1.32;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.state-strip {
|
|
165
|
+
gap: 9px;
|
|
166
|
+
padding: 13px 17px 12px;
|
|
167
|
+
border: 1px solid var(--border);
|
|
168
|
+
border-radius: 9px;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.state-row {
|
|
172
|
+
display: grid;
|
|
173
|
+
grid-template-columns: repeat(4, minmax(128px, 1fr)) minmax(250px, 1.45fr);
|
|
174
|
+
align-items: stretch;
|
|
175
|
+
gap: 10px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.state-item {
|
|
179
|
+
justify-content: center;
|
|
180
|
+
gap: 4px;
|
|
181
|
+
min-height: 54px;
|
|
182
|
+
padding: 8px 11px;
|
|
183
|
+
border: 1px solid var(--border);
|
|
184
|
+
border-radius: 7px;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.state-name {
|
|
188
|
+
color: var(--heading);
|
|
189
|
+
font-family: var(--mono);
|
|
190
|
+
font-size: 0.76rem;
|
|
191
|
+
font-weight: 700;
|
|
192
|
+
letter-spacing: 0.06em;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.state-detail {
|
|
196
|
+
color: var(--body);
|
|
197
|
+
font-size: 0.72rem;
|
|
198
|
+
line-height: 1.24;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.state-ready {
|
|
202
|
+
border-color: var(--green);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.state-ready .state-name {
|
|
206
|
+
color: var(--green);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.state-created {
|
|
210
|
+
background: var(--accent);
|
|
211
|
+
border-color: var(--accent);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.state-created .state-name,
|
|
215
|
+
.state-created .state-detail {
|
|
216
|
+
color: var(--ink-dark);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.state-blocked {
|
|
220
|
+
border-color: var(--rose);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.state-blocked .state-name {
|
|
224
|
+
color: var(--rose);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.state-copy {
|
|
228
|
+
justify-content: center;
|
|
229
|
+
color: var(--body);
|
|
230
|
+
font-size: 0.88rem;
|
|
231
|
+
line-height: 1.35;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.proof-line {
|
|
235
|
+
color: var(--heading);
|
|
236
|
+
font-size: 0.96rem;
|
|
237
|
+
line-height: 1.35;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.closing-band {
|
|
241
|
+
gap: 7px;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.closing-line {
|
|
245
|
+
color: var(--heading);
|
|
246
|
+
font-size: 1.2rem;
|
|
247
|
+
font-weight: 700;
|
|
248
|
+
line-height: 1.2;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.metadata-line {
|
|
252
|
+
display: flex;
|
|
253
|
+
justify-content: space-between;
|
|
254
|
+
gap: 24px;
|
|
255
|
+
color: var(--metadata);
|
|
256
|
+
font-family: var(--mono);
|
|
257
|
+
font-size: 0.63rem;
|
|
258
|
+
line-height: 1.3;
|
|
259
|
+
white-space: nowrap;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
@media (max-width: 1100px) {
|
|
263
|
+
.frame {
|
|
264
|
+
gap: 12px;
|
|
265
|
+
padding: 22px;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
h1 {
|
|
269
|
+
font-size: 1.75rem;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.skill-card {
|
|
273
|
+
gap: 8px;
|
|
274
|
+
padding: 14px;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.card-copy,
|
|
278
|
+
.state-copy {
|
|
279
|
+
font-size: 0.76rem;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.metadata-line {
|
|
283
|
+
font-size: 0.51rem;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
@media (prefers-reduced-motion: reduce) {
|
|
288
|
+
*,
|
|
289
|
+
*::before,
|
|
290
|
+
*::after {
|
|
291
|
+
scroll-behavior: auto;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
</style>
|
|
295
|
+
|
|
296
|
+
<main class="frame" aria-labelledby="card-title">
|
|
297
|
+
<header class="title-band">
|
|
298
|
+
<h1 id="card-title">AGENT CONTEXT STORE</h1>
|
|
299
|
+
<p class="subtitle">One private repository holds shared context: discover first, ask once, then verify before claiming success.</p>
|
|
300
|
+
</header>
|
|
301
|
+
|
|
302
|
+
<section class="pipeline" aria-label="Context repository resolution order">
|
|
303
|
+
<div class="pipeline-step">check pointer</div>
|
|
304
|
+
<div class="arrow" aria-hidden="true">→</div>
|
|
305
|
+
<div class="pipeline-step">discover stores</div>
|
|
306
|
+
<div class="arrow" aria-hidden="true">→</div>
|
|
307
|
+
<div class="pipeline-step highlight">ask if needed</div>
|
|
308
|
+
<div class="arrow" aria-hidden="true">→</div>
|
|
309
|
+
<div class="pipeline-step">create + seed</div>
|
|
310
|
+
<div class="arrow" aria-hidden="true">→</div>
|
|
311
|
+
<div class="pipeline-step">verify + record</div>
|
|
312
|
+
</section>
|
|
313
|
+
|
|
314
|
+
<section class="cards" aria-label="Three skills that use the context store">
|
|
315
|
+
<article class="skill-card">
|
|
316
|
+
<p class="eyebrow">SKILL 01</p>
|
|
317
|
+
<h2><code>context-repo</code></h2>
|
|
318
|
+
<div class="divider" aria-hidden="true"></div>
|
|
319
|
+
<div class="card-copy">
|
|
320
|
+
<p>Discovers or resolves one private GitHub repository and its fixed local clone.</p>
|
|
321
|
+
<p>Never claims ready or created until fresh remote and local reads agree.</p>
|
|
322
|
+
</div>
|
|
323
|
+
</article>
|
|
324
|
+
|
|
325
|
+
<article class="skill-card">
|
|
326
|
+
<p class="eyebrow">SKILL 02</p>
|
|
327
|
+
<h2><code>retro-analysis</code></h2>
|
|
328
|
+
<div class="divider" aria-hidden="true"></div>
|
|
329
|
+
<div class="card-copy">
|
|
330
|
+
<p>Writes one uniquely named snapshot under <code>retro/</code>, after reading the store.</p>
|
|
331
|
+
<p>Shared history powers <code>compare</code> and <code>global</code> across machines.</p>
|
|
332
|
+
</div>
|
|
333
|
+
</article>
|
|
334
|
+
|
|
335
|
+
<article class="skill-card">
|
|
336
|
+
<p class="eyebrow">SKILL 03</p>
|
|
337
|
+
<h2><code>shared-knowledge-artifact</code></h2>
|
|
338
|
+
<div class="divider" aria-hidden="true"></div>
|
|
339
|
+
<div class="card-copy">
|
|
340
|
+
<p>Appends notes to the root <code>ledger.json</code>; the Artifact page is the user-facing view.</p>
|
|
341
|
+
<p>Git is canonical; viewer-only notes reach it on the next agent publish.</p>
|
|
342
|
+
</div>
|
|
343
|
+
</article>
|
|
344
|
+
</section>
|
|
345
|
+
|
|
346
|
+
<section class="state-strip" aria-labelledby="state-title">
|
|
347
|
+
<p class="strip-label" id="state-title">EVERY RUN ENDS IN ONE STATE</p>
|
|
348
|
+
<div class="state-row">
|
|
349
|
+
<div class="state-item state-ready">
|
|
350
|
+
<p class="state-name">READY</p>
|
|
351
|
+
<p class="state-detail">existing or adopted, nothing created</p>
|
|
352
|
+
</div>
|
|
353
|
+
<div class="state-item state-created">
|
|
354
|
+
<p class="state-name">CREATED</p>
|
|
355
|
+
<p class="state-detail">new store, read back and verified</p>
|
|
356
|
+
</div>
|
|
357
|
+
<div class="state-item">
|
|
358
|
+
<p class="state-name">LOCAL_ONLY</p>
|
|
359
|
+
<p class="state-detail">declined, or store not resolved</p>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="state-item state-blocked">
|
|
362
|
+
<p class="state-name">BLOCKED</p>
|
|
363
|
+
<p class="state-detail"><code>gh</code>, discovery, or verification failed</p>
|
|
364
|
+
</div>
|
|
365
|
+
<p class="state-copy">The caller always gets a definite answer, never a silent partial success.</p>
|
|
366
|
+
</div>
|
|
367
|
+
<p class="proof-line">A push that appears to succeed is <strong>not proof</strong>. <strong>CREATED</strong> is claimed only after a <strong>fresh read-back agrees</strong>.</p>
|
|
368
|
+
</section>
|
|
369
|
+
|
|
370
|
+
<footer class="closing-band">
|
|
371
|
+
<p class="closing-line">One consented store gives every skill durable context with explicit verification.</p>
|
|
372
|
+
<div class="metadata-line">
|
|
373
|
+
<span>${XDG_CONFIG_HOME:-$HOME/.config}/agent-context/config.json · ${XDG_DATA_HOME:-$HOME/.local/share}/agent-context/repo</span>
|
|
374
|
+
<span>oleg-koval/agent-skills</span>
|
|
375
|
+
</div>
|
|
376
|
+
</footer>
|
|
377
|
+
</main>
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -23,7 +23,8 @@ description: >
|
|
|
23
23
|
form.
|
|
24
24
|
license: MIT
|
|
25
25
|
allowed-tools: Bash, Read, Write, Edit, Agent, Workflow, AskUserQuestion, Artifact
|
|
26
|
-
compatibility:
|
|
26
|
+
compatibility: >
|
|
27
|
+
Claude Code only. Requires the Workflow tool (multi-agent orchestration)
|
|
27
28
|
and the Artifact tool (living review page): other Agent Skills-compatible tools
|
|
28
29
|
without an equivalent to Workflow cannot run the review/verify/critic pipeline this
|
|
29
30
|
skill depends on. Requires git and gh (GitHub CLI) authenticated.
|