comitia 0.3.0 → 0.4.1
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 +87 -63
- package/index.js +154 -144
- package/package.json +8 -3
- package/plugin/.claude-plugin/plugin.json +8 -2
- package/plugin/skills/ingest/SKILL.md +51 -43
- package/plugin/skills/problem/SKILL.md +310 -0
- package/plugin/skills/read/SKILL.md +43 -37
- package/plugin/skills/slack/SKILL.md +65 -54
- package/plugin/skills/sync/SKILL.md +24 -18
package/package.json
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "comitia",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "Ask anything about your company and get the answer with its source — your Slack, meetings and docs as a linked wiki, from the AI you already use",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"comitia",
|
|
7
|
+
"company-wiki",
|
|
8
|
+
"knowledge-base",
|
|
7
9
|
"ontology",
|
|
8
10
|
"wiki",
|
|
9
11
|
"slack",
|
|
10
12
|
"cli",
|
|
13
|
+
"mcp",
|
|
11
14
|
"llm",
|
|
12
15
|
"claude",
|
|
13
|
-
"
|
|
16
|
+
"claude-code",
|
|
17
|
+
"agent",
|
|
18
|
+
"context"
|
|
14
19
|
],
|
|
15
20
|
"homepage": "https://z2o.kr",
|
|
16
21
|
"bugs": {
|
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
3
|
"name": "comitia",
|
|
4
4
|
"version": "0.1.0",
|
|
5
|
-
"description": "Comitia —
|
|
5
|
+
"description": "Comitia — read your company's wiki, Slack and meeting notes (/comitia:read), organize them into the wiki (/comitia:ingest), surface the things you can only learn by changing something (/comitia:problem), post to Slack (/comitia:slack), and pull the latest right now (/comitia:sync). Wraps the comitia CLI.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Lindy Operation"
|
|
8
8
|
},
|
|
9
9
|
"homepage": "https://z2o.kr",
|
|
10
|
-
"keywords": [
|
|
10
|
+
"keywords": [
|
|
11
|
+
"comitia",
|
|
12
|
+
"wiki",
|
|
13
|
+
"ontology",
|
|
14
|
+
"slack",
|
|
15
|
+
"experiment"
|
|
16
|
+
]
|
|
11
17
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ingest
|
|
3
|
-
description:
|
|
3
|
+
description: Use to put material into the Comitia wiki and organize it — "add this to the wiki", "organize these meeting notes in comitia", "clear the pending queue", "tidy up the ontology", "summarize what came in on Slack". Push the original in, find and read the related pages, and leave a rewritten summary. Do it yourself rather than handing it to Comitia's own AI (organize).
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash(comitia *)
|
|
6
6
|
- Bash(z2o *)
|
|
@@ -9,93 +9,101 @@ allowed-tools:
|
|
|
9
9
|
- Write
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
# /comitia:ingest —
|
|
12
|
+
# /comitia:ingest — organize it into the wiki
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
**You do the organizing.** Only call `comitia organize` (Comitia's own AI) when the person
|
|
15
|
+
explicitly asks for that.
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
Request: `$ARGUMENTS`
|
|
17
18
|
|
|
18
|
-
## 0.
|
|
19
|
+
## 0. Rules first — every time
|
|
19
20
|
|
|
20
21
|
```
|
|
21
22
|
comitia rules
|
|
22
23
|
```
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
The axes, the page format and the places you must not write are all there. **They differ per
|
|
26
|
+
company and the person may have edited them.** This skill owns the **sequence**;
|
|
27
|
+
`comitia rules` owns the **format**. When they disagree, **`comitia rules` wins.**
|
|
26
28
|
|
|
27
|
-
## 1.
|
|
29
|
+
## 1. Push — only if there's an original to push
|
|
28
30
|
|
|
29
31
|
```
|
|
30
|
-
comitia find
|
|
31
|
-
comitia push "
|
|
32
|
+
comitia find <key word from the title> check whether it's already in
|
|
33
|
+
comitia push "<title>" <file> only if it isn't
|
|
32
34
|
```
|
|
33
35
|
|
|
34
|
-
- ⚠️
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
36
|
+
- ⚠️ **Slack, Tiro and calendar are collected automatically every hour.** Pushing meeting notes
|
|
37
|
+
by hand again gives you **two copies of the same meeting.** If `find` turns it up, don't push.
|
|
38
|
+
For a meeting that just ended, **pull it now with `comitia sync`** and run `find` again
|
|
39
|
+
(Tiro only delivers a meeting once its summary exists — if it's still missing after that, push).
|
|
40
|
+
- Push the original **without changing a character.** Don't push a summary — summaries go into
|
|
41
|
+
the wiki in step 5.
|
|
42
|
+
- If you see a password, token or account number, **ask the person before pushing.**
|
|
39
43
|
|
|
40
|
-
## 2.
|
|
44
|
+
## 2. Build the skeleton — once
|
|
41
45
|
|
|
42
46
|
```
|
|
43
47
|
comitia build
|
|
44
48
|
```
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
Code builds the originals (`docs/`), the ledger and the tables (costs nothing). Without this,
|
|
51
|
+
the links in your summary break. **Don't call it twice.**
|
|
48
52
|
|
|
49
|
-
## 3.
|
|
53
|
+
## 3. See what needs doing
|
|
50
54
|
|
|
51
55
|
```
|
|
52
|
-
comitia pending
|
|
53
|
-
comitia raw <id> <id> ...
|
|
56
|
+
comitia pending originals that need a summary
|
|
57
|
+
comitia raw <id> <id> ... read several at once
|
|
54
58
|
```
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
Some originals are only chatter. Pull out **only the facts worth keeping** — who, what, when, numbers.
|
|
57
61
|
|
|
58
|
-
## 4.
|
|
62
|
+
## 4. Find where it belongs — don't skip this
|
|
59
63
|
|
|
60
64
|
```
|
|
61
65
|
comitia list topics/
|
|
62
|
-
comitia search
|
|
63
|
-
comitia read topics
|
|
66
|
+
comitia search <word>
|
|
67
|
+
comitia read topics/<candidate>.md
|
|
64
68
|
```
|
|
65
69
|
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
**Create a new page only when no existing topic really fits.** If you only ever add new pages,
|
|
71
|
+
the wiki scatters instead of accumulating. Check the original's path with `comitia list docs/` —
|
|
72
|
+
use **exactly the path step 2 created.**
|
|
68
73
|
|
|
69
|
-
## 5.
|
|
74
|
+
## 5. Rewrite
|
|
70
75
|
|
|
71
|
-
|
|
76
|
+
A topic page has two layers (see `comitia rules` for the exact shape).
|
|
72
77
|
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
`- [[docs
|
|
78
|
+
- **Prose** — **rewrite it** to take in the new material. One piece, not appended.
|
|
79
|
+
- **The `## Documents` lines** — **never delete or edit an existing line.** Only add a line for
|
|
80
|
+
the new original: `- [[docs/<path>|<title>]] — one-line description`
|
|
76
81
|
|
|
77
|
-
|
|
82
|
+
Write to a temp file and upload that.
|
|
78
83
|
|
|
79
84
|
```
|
|
80
|
-
comitia write topics
|
|
85
|
+
comitia write topics/<topic>.md <tmpfile>
|
|
81
86
|
```
|
|
82
87
|
|
|
83
|
-
-
|
|
84
|
-
|
|
88
|
+
- Without the front matter (`type`, `tags`, `updated`), the server rejects it and shows you the
|
|
89
|
+
template — follow that template.
|
|
90
|
+
- **Where you must not write**: `ledger/` `entities/` `tables/` `docs/` `calendar/` `meetings/`
|
|
91
|
+
`index.md` `log.md` `overview.md` — code builds those. The server rejects writes there too.
|
|
85
92
|
|
|
86
|
-
## 6.
|
|
93
|
+
## 6. Check
|
|
87
94
|
|
|
88
95
|
```
|
|
89
96
|
comitia pending
|
|
90
97
|
```
|
|
91
98
|
|
|
92
|
-
|
|
93
|
-
`comitia list docs/`
|
|
99
|
+
Once a summary links an original's document, that original **drops out of pending.** If it didn't
|
|
100
|
+
drop out, **the link path is wrong** — compare against `comitia list docs/` and fix it.
|
|
94
101
|
|
|
95
|
-
##
|
|
102
|
+
## If you're asked to post the result to Slack
|
|
96
103
|
|
|
97
|
-
`/comitia:slack`
|
|
104
|
+
Follow `/comitia:slack` — **always show the channel and the text and get approval before posting.**
|
|
98
105
|
|
|
99
|
-
##
|
|
106
|
+
## Report
|
|
100
107
|
|
|
101
|
-
|
|
108
|
+
Keep it short: what you pushed · pages you edited or created · how many are still pending ·
|
|
109
|
+
**anything the originals disagree about** (dates, numbers, people).
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: problem
|
|
3
|
+
description: Use to pull the things that "don't add up" out of the company record and put them on the lab board — "find what's wrong", "anything odd this month?", "anything that stands out?", "run the lab", "check whether it cleared up". Sweep the wiki, keep only the real worries, check each candidate cause against a literal quote from the original, and leave a problem document. Choosing and deciding what to try is the person's job.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash(comitia *)
|
|
6
|
+
- Bash(mktemp *)
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /comitia:problem — find the things you only learn by changing something
|
|
12
|
+
|
|
13
|
+
**The assistant answers "how much." This finds "why is this like that."**
|
|
14
|
+
|
|
15
|
+
What happens here goes **as far as the problem and the candidate causes.** Which cause to believe
|
|
16
|
+
and what to try is chosen **by the person, on the lab screen.**
|
|
17
|
+
|
|
18
|
+
Request: `$ARGUMENTS`
|
|
19
|
+
|
|
20
|
+
## 0. Rules first — every time
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
comitia rules
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The axes, the page format and the places you must not write are there. They differ per company.
|
|
27
|
+
**Experiment documents go in `experiments/`** — it isn't on the forbidden list
|
|
28
|
+
(`ledger/` `entities/` `tables/` `docs/` `calendar/` `meetings/` `index.md` `log.md` `overview.md`).
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 🔑 What counts as a "problem" — this test is the whole thing
|
|
33
|
+
|
|
34
|
+
> **You don't know why, and you only find out by changing something.**
|
|
35
|
+
|
|
36
|
+
| | Why |
|
|
37
|
+
|---|---|
|
|
38
|
+
| ❌ 30 items are waiting to be organized | **Just run it.** Not an experiment |
|
|
39
|
+
| ❌ The totals in a document don't match | A consistency bug. Just fix it |
|
|
40
|
+
| ❌ Something comes up often but has no page | Just write it |
|
|
41
|
+
| ❌ Revenue fell → cause: that's what the ledger says | **Restating the arithmetic** |
|
|
42
|
+
| ✅ The deadline has slipped three times running | You don't know why, and you only find out by changing how you work |
|
|
43
|
+
| ✅ One person makes 70% of all decisions | **Dangerous even if it's been that way for months.** A problem with zero change |
|
|
44
|
+
| ✅ Things open faster than they close | Each number is fine. **The relationship between them** is the problem |
|
|
45
|
+
|
|
46
|
+
**If there's nothing to worry about, "nothing" is the right answer.** Don't pad the list.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 1. Sweep for signals exhaustively — without judging
|
|
51
|
+
|
|
52
|
+
**Do the not-missing-anything part mechanically, and judge whether it's a worry afterwards.**
|
|
53
|
+
Doing it the other way round failed twice — shortlist first and **that shortlist becomes your
|
|
54
|
+
field of view**; judge from the start and the same material yields 0 findings one run and 2 the next.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
comitia list tables/ tables with numbers
|
|
58
|
+
comitia list ledger/ the ledger, if there is one
|
|
59
|
+
comitia list topics/ topics
|
|
60
|
+
comitia read <path> <path> … several at once
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Five families of signal — the same rules hold for anything
|
|
64
|
+
|
|
65
|
+
Spikes, drops and concentration are not money concepts. **If it's a number, the shape is the same.**
|
|
66
|
+
|
|
67
|
+
| Family | What to look at | In the record |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| **Spike / drop** | The last period is more than ±15% off the preceding average | How far a deadline slipped · how often a topic comes up |
|
|
70
|
+
| **Uneven** | The gaps aren't regular | The cadence of a recurring meeting |
|
|
71
|
+
| **Concentration** | One axis holds 50% or more of the whole | One person · one topic |
|
|
72
|
+
| **Stopped** | Present in the first half, absent in the second | A recurring meeting that vanished · an attendee who stopped showing |
|
|
73
|
+
| **Relationship** | Each is fine, but the ratio of the two is the problem | **Items opened vs items closed** |
|
|
74
|
+
|
|
75
|
+
### Counting pitfalls — every one of these burned us for real
|
|
76
|
+
|
|
77
|
+
- **Don't count a totals row as an item.** "50% of the total sits in one place" is arithmetically inevitable
|
|
78
|
+
- **Leave out the month that hasn't finished.** Run this early in a month and the whole list is buried under a fake drop
|
|
79
|
+
- **If the same table appears in two places, count it once.** Same values, same story
|
|
80
|
+
- **An axis that isn't time isn't a time series.** Reading row numbers as time invents changes that aren't there
|
|
81
|
+
- **Cap each family** (about 5). Don't let one family take over the list
|
|
82
|
+
|
|
83
|
+
## 2. Pick — as a sentence a person reads
|
|
84
|
+
|
|
85
|
+
Pick only **3 to 5** out of the pile of signals. And write them **as a sentence, not a metric name.**
|
|
86
|
+
|
|
87
|
+
- ❌ `meeting frequency (weekly) ↓42%`
|
|
88
|
+
- ✅ **"The weekly only happened twice in September — half the average of four over the three months before."**
|
|
89
|
+
|
|
90
|
+
⚠️ **Copy numbers verbatim from the document you read. Don't recompute them.** If what you counted
|
|
91
|
+
differs from what the document says, drop that item.
|
|
92
|
+
|
|
93
|
+
## 3. Find causes — a cause has to be an *event*
|
|
94
|
+
|
|
95
|
+
A breakdown (which line item pulled how much) is **not a cause, it's the arithmetic restated.**
|
|
96
|
+
Write one line about where you looked and move on.
|
|
97
|
+
|
|
98
|
+
**The only thing that belongs in the cause slot is an event written down in a document.**
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
comitia search <word>
|
|
102
|
+
comitia read meetings/… topics/… entities/…
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
[problem] ──dashed──▶ [event = candidate cause] ──solid──▶ [the quote where that event is written]
|
|
107
|
+
weekly halved a client deadline slipped, Sep 29 meeting: "everything got
|
|
108
|
+
schedule piled onto it pushed to this one job"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- **Dashed = a guess.** Attached because the timing lines up
|
|
112
|
+
- **Solid = checked word for word against the original**
|
|
113
|
+
|
|
114
|
+
### 🔑 A quote has to exist, literally, in the original
|
|
115
|
+
|
|
116
|
+
A path that exists isn't enough. This is where **citing a real document for something it doesn't
|
|
117
|
+
say** gets stopped.
|
|
118
|
+
|
|
119
|
+
- **Find and confirm** the quote in the `comitia read` output. If you can't find it, **drop that candidate**
|
|
120
|
+
- Don't be definitive. A cause is a **candidate.** Write several in the document and don't declare
|
|
121
|
+
which one is right — the person chooses, and can edit or delete them on screen
|
|
122
|
+
|
|
123
|
+
## 4. 🔑 Write it immediately — but **only the problem and the causes**
|
|
124
|
+
|
|
125
|
+
**Write without asking.** One document per problem you picked. Asking permission before writing
|
|
126
|
+
stops the loop right there.
|
|
127
|
+
|
|
128
|
+
**But don't build the experiment.** Which cause to follow, what to try, and from when are **the
|
|
129
|
+
person's call.** Decide it for them and there's nothing left for them to choose.
|
|
130
|
+
|
|
131
|
+
> 📌 **The screen only shows the most recent run** (2026-10-12). One sweep is one `decided` date.
|
|
132
|
+
> Earlier runs aren't deleted — they stay in `experiments/` — but they **drop off the problem cards.**
|
|
133
|
+
> So **the 3-5 you pick this time are everything that appears on screen** — if something from last
|
|
134
|
+
> time still matters, write it again. Anything the person moved to `watching` is no longer `found`
|
|
135
|
+
> and is unaffected.
|
|
136
|
+
|
|
137
|
+
> 📌 **The lab screen reads this document directly.** The `## What looks off` you write becomes the
|
|
138
|
+
> problem card, and `## Candidate causes` becomes the **cause graph.** Everything after that
|
|
139
|
+
> (choosing a cause → what to try → preview → experiment log) is what the screen already does.
|
|
140
|
+
> **Your job ends at laying out the material.**
|
|
141
|
+
|
|
142
|
+
| You do | The person does |
|
|
143
|
+
|---|---|
|
|
144
|
+
| Find the problem | Choose which cause is right |
|
|
145
|
+
| Offer several candidate causes | Write **what to try** |
|
|
146
|
+
| Attach evidence found in the original | Start the experiment (`watching`) · or dismiss it as "not a problem" |
|
|
147
|
+
|
|
148
|
+
Path: `experiments/YYYY-MM-DD-<short-slug-of-the-problem>.md`
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
comitia write experiments/2026-10-01-product-dailies-dropped.md <tmpfile>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### ⚠️ Follow the format exactly — the screen reads these keys
|
|
155
|
+
|
|
156
|
+
**One character off and the card comes up blank.**
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
---
|
|
160
|
+
type: experiment
|
|
161
|
+
status: found
|
|
162
|
+
decided: 2026-10-01
|
|
163
|
+
hypothesis: "Work keeps opening but nothing visibly closes"
|
|
164
|
+
action: ""
|
|
165
|
+
metric:
|
|
166
|
+
domain: measure
|
|
167
|
+
key: "open items"
|
|
168
|
+
measure: monthly-sum
|
|
169
|
+
before: "2026-07,2026-08,2026-09"
|
|
170
|
+
action_from: ""
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
# Work keeps opening but nothing visibly closes
|
|
174
|
+
|
|
175
|
+
## What looks off
|
|
176
|
+
|
|
177
|
+
In September the task board went up with 14 tracks and 118 items, and three new apps, a site
|
|
178
|
+
redesign, three new channels and a partner dashboard all opened.
|
|
179
|
+
|
|
180
|
+
Nothing visibly closed. One internal project was paused, and a client contract deadline moved
|
|
181
|
+
from September 30 to October 15.
|
|
182
|
+
|
|
183
|
+
## Candidate causes — the person chooses
|
|
184
|
+
|
|
185
|
+
1. **The client project ate all the time** — the timing lines up `docs/2026-09-30-daily.md`
|
|
186
|
+
> let's drop the other threads and focus on this one
|
|
187
|
+
|
|
188
|
+
2. **There's room to open things but no room to close them**
|
|
189
|
+
No evidence found. This is only a guess
|
|
190
|
+
|
|
191
|
+
## What to try
|
|
192
|
+
|
|
193
|
+
Left blank — the person fills this in.
|
|
194
|
+
|
|
195
|
+
## Observations
|
|
196
|
+
|
|
197
|
+
None yet.
|
|
198
|
+
|
|
199
|
+
## Sources
|
|
200
|
+
|
|
201
|
+
- `docs/2026-09-28-task-board.md` — the Sep 28 task board
|
|
202
|
+
- `docs/2026-09-24-direction-and-outsourcing-bottleneck.md` — what opened on Sep 24
|
|
203
|
+
- `docs/2026-09-30-daily.md` — Sep 30, the partner dashboard and the deadline change
|
|
204
|
+
- `meetings/2026-09.md` — all September meetings
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Five rules.**
|
|
208
|
+
- **`status: found`** — not an experiment yet. It becomes `watching` when the person writes what to try
|
|
209
|
+
- **Leave `action` and `action_from` as empty strings.** You don't fill them
|
|
210
|
+
- **Front matter values are one line.** A line break makes the next line parse as a YAML key and the
|
|
211
|
+
value disappears entirely (seen for real)
|
|
212
|
+
- `hypothesis` and the `# title` are **the same sentence**, and they state **the problem** (not the
|
|
213
|
+
cause) — that's what shows on the card
|
|
214
|
+
- `domain: measure` · `key: "<name of the thing being counted>"` — anything that isn't the ledger is `measure`
|
|
215
|
+
- ⚠️ **Don't put a `- ` list in an empty section.** The screen counts `- ` lines under `## Observations`,
|
|
216
|
+
so "- (none yet)" registers as **one observation** (seen for real). Write it as a sentence
|
|
217
|
+
- Put `## Sources` **last** — just paths and a one-line description
|
|
218
|
+
|
|
219
|
+
### 🔑 "What looks off" is short and plain — keep paths out of the sentences
|
|
220
|
+
|
|
221
|
+
This section is **what the person reads on the card.** Wedging file paths into parentheses breaks
|
|
222
|
+
the sentence. **Collect the paths at the bottom under `## Sources`.**
|
|
223
|
+
|
|
224
|
+
| | |
|
|
225
|
+
|---|---|
|
|
226
|
+
| ❌ | On 9/28 the team task board went up with 14 tracks and 118 items (`docs/2026-09-28-…`). Within that week three apps, a site redesign (second priority) and three channels opened on 9/24 (`docs/2026-09-24-…`), and on 9/30 a partner dashboard was added (`docs/2026-09-30-…`) |
|
|
227
|
+
| ✅ | In September three new apps, a site redesign and a partner dashboard all opened. **Nothing visibly closed.** |
|
|
228
|
+
|
|
229
|
+
- **Two or three sentences** is enough. Longer and nobody reads it on the card
|
|
230
|
+
- **No parenthetical asides.** Drop things like "(second priority)" and "(internal target)"
|
|
231
|
+
- Numbers **only where they're needed.** Don't list dates one by one — fold them into "in September"
|
|
232
|
+
- ⚠️ **What you counted can be wrong** — for real: 105 raw items were counted as 105 meetings when
|
|
233
|
+
there were actually 81 (one meeting arrives as several raws). That's why you list the sources —
|
|
234
|
+
so the person can **check it in half a second**
|
|
235
|
+
|
|
236
|
+
### 🔑 The shape of a cause is what draws the line on the graph
|
|
237
|
+
|
|
238
|
+
The screen reads the `## Candidate causes` section by these rules. **Get the shape wrong and no
|
|
239
|
+
line is drawn.**
|
|
240
|
+
|
|
241
|
+
| What you write | On screen |
|
|
242
|
+
|---|---|
|
|
243
|
+
| `1. **Cause name** — description \`path.md\`` | A cause node plus an evidence box |
|
|
244
|
+
| below it, ` > a line from the original` | **Solid line** — meaning it's written in your data |
|
|
245
|
+
| no quote | **Dashed line** — meaning it's a guess |
|
|
246
|
+
|
|
247
|
+
**The quote has to exist literally in the original.** If you couldn't find one, **write no quote line**
|
|
248
|
+
and say "No evidence found. This is only a guess" — drawing a solid line to evidence that doesn't
|
|
249
|
+
exist turns the screen itself into a lie.
|
|
250
|
+
|
|
251
|
+
Offer **several** causes. Narrowing to one is the person's job.
|
|
252
|
+
|
|
253
|
+
### Things dismissed as "not a problem"
|
|
254
|
+
|
|
255
|
+
One line each in `experiments/_dismissed.md`. **It has to be reversible.**
|
|
256
|
+
⚠️ The server treats this file specially so it stays off the screen's list — don't rename it.
|
|
257
|
+
|
|
258
|
+
## 5. Review — when asked to "check the experiments"
|
|
259
|
+
|
|
260
|
+
⚠️ **This only covers experiments the person has already started (`watching`).** `found` isn't an
|
|
261
|
+
experiment yet, so there's nothing to measure.
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
comitia list experiments/
|
|
265
|
+
comitia read experiments/<file>
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Take the ones with `status: watching`. **Once a month has closed**, measure the same metric for that
|
|
269
|
+
month and compare it against the `before` range — there is no target. Just look at how it actually moved.
|
|
270
|
+
|
|
271
|
+
Append observations **to the `## Observations` section**, one line each (don't touch the front matter).
|
|
272
|
+
|
|
273
|
+
```markdown
|
|
274
|
+
## Observations
|
|
275
|
+
|
|
276
|
+
- 2026-10 · 4 times — average 4.7 over 2026-07~09 before the change (`meetings/2026-10.md`)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### 🔑 Never close it automatically — only signal that it could close
|
|
280
|
+
|
|
281
|
+
If it moved the right way, **ask "this looks resolved. Close it?"** **The person closes it.**
|
|
282
|
+
|
|
283
|
+
- Things improve for a month and then go back. Close one wrongly and the person stops trusting the screen
|
|
284
|
+
- If they say to close it, set `status` in the front matter to **`done`** (the screen only knows
|
|
285
|
+
`watching` and `done`)
|
|
286
|
+
- If not yet, leave one observation and leave `status` as `watching`
|
|
287
|
+
|
|
288
|
+
⚠️ **Don't judge from a single month.** You can't tell whether that month was just unusual. And
|
|
289
|
+
**record every closed month without exception** — picking only the good-looking months is a lie.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Report
|
|
294
|
+
|
|
295
|
+
Keep it short for the person. You report **after everything is already written** — this is not the
|
|
296
|
+
place to ask permission.
|
|
297
|
+
|
|
298
|
+
- **What you wrote** — how many and the paths — and say "they appear under Found problems in the lab"
|
|
299
|
+
- Say **there's something left to choose** — the experiment starts when they pick a cause and write what to try
|
|
300
|
+
- **The problems you found** — as sentences. If there are none, **"nothing to worry about" is the right answer**
|
|
301
|
+
- **Candidate causes** — distinguishing dashed (a guess) from solid (checked against the original)
|
|
302
|
+
- **What you dropped** — if you dropped a candidate because the quote wasn't in the original, say so
|
|
303
|
+
- **Closing signals** — experiments that look resolved. Say that you **did not close them**
|
|
304
|
+
- ⚠️ **If you couldn't look at everything, say so.** "Nothing to worry about" and "I couldn't look at
|
|
305
|
+
everything" are completely different statements — reporting what you ran out of budget to read as
|
|
306
|
+
"no problems" makes the person trust the screen, and that's the worst outcome
|
|
307
|
+
|
|
308
|
+
## If you're asked to post it to Slack
|
|
309
|
+
|
|
310
|
+
Follow `/comitia:slack` — **show the channel and the text and get approval before posting.**
|
|
@@ -1,49 +1,55 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: read
|
|
3
|
-
description:
|
|
3
|
+
description: Use when you need company context — find it in Slack, meeting notes, email and the wiki, and answer from there. For requests like "what did we say about this on Slack", "what did we decide in the last meeting", "where did our ~ end up", "look it up in comitia", "catch me up on recent discussion". Pull it with comitia instead of asking the person to paste it.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash(comitia *)
|
|
6
6
|
- Bash(z2o *)
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /comitia:read —
|
|
9
|
+
# /comitia:read — pull up company context
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
Your company's Slack, meeting notes, email and organized wiki all come out through the
|
|
12
|
+
`comitia` command. **Never ask the person to "paste it in here."** This skill only reads —
|
|
13
|
+
writing is `/comitia:ingest`.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
Request: `$ARGUMENTS`
|
|
15
16
|
|
|
16
|
-
##
|
|
17
|
+
## Where to look — two places
|
|
17
18
|
|
|
18
|
-
| |
|
|
19
|
+
| | What | Commands |
|
|
19
20
|
|---|---|---|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
- **"
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
21
|
+
| **Raw** | As it arrived. Slack, email, Tiro. **The most recent** | `comitia recent [n]` · `comitia find <word>` · `comitia raw <id...>` |
|
|
22
|
+
| **Wiki** | Organized knowledge. Topics, entities, ledger | `comitia list [prefix]` · `comitia search <word>` · `comitia read <path...>` · `comitia graph` |
|
|
23
|
+
|
|
24
|
+
- Requests about **today, this week, or "on Slack"** → start with raw. Skim with `recent`, read with `raw`.
|
|
25
|
+
- Requests like **"what was ~", "where does ~ stand"** → start with the wiki.
|
|
26
|
+
- After reading both, **if they disagree, say both.** Raw is more recent — the wiki stops at
|
|
27
|
+
the moment it was last organized.
|
|
28
|
+
- **Read the collection status line at the top of `recent` / `find` first** — it shows when each
|
|
29
|
+
connection last pulled. If what you need is more recent than that, or **what just happened
|
|
30
|
+
isn't there**, ask the person *"want me to pull it in now?"* and if yes follow `/comitia:sync`
|
|
31
|
+
(`comitia sync`, or `comitia sync tiro` for just one), then run `recent` again. A read-only
|
|
32
|
+
token can't pull, so in that case say so and wait for the top of the hour.
|
|
33
|
+
|
|
34
|
+
## How to search the wiki
|
|
35
|
+
|
|
36
|
+
1. `comitia read index.md overview.md` — the table of contents and the overview. Decide where to look from here.
|
|
37
|
+
2. Browse **by prefix**, like `comitia list topics/`. When the wiki is around 100 pages,
|
|
38
|
+
**reading the relevant pages whole beats searching.**
|
|
39
|
+
3. `comitia search` only matches **the literal word** (max 30 hits; it does not search by meaning).
|
|
40
|
+
Search **several times** with synonyms and alternate spellings — e.g. `renewal` · `renewals` · `contract work`.
|
|
41
|
+
4. `comitia read a.md b.md c.md` — **several pages at once** (up to 40 pages / 120,000 characters).
|
|
42
|
+
5. The `## Documents` lines in a topic page point at the originals in `docs/`. When the prose is
|
|
43
|
+
vague, read the original.
|
|
44
|
+
|
|
45
|
+
## When you answer
|
|
46
|
+
|
|
47
|
+
- **Cite the source** — a page path (`topics/logistics.md`) or a raw id (`d213b634`).
|
|
48
|
+
- If you couldn't find it, **say you couldn't.** Don't fill the gap with a guess.
|
|
49
|
+
- With several workspaces, pick one with `-c <id>`. If unsure, run `comitia companies`.
|
|
50
|
+
|
|
51
|
+
## If you get stuck
|
|
52
|
+
|
|
53
|
+
- `no token` → tell the person to run `comitia init`. **Never take a token through the chat** —
|
|
54
|
+
the person enters it themselves.
|
|
55
|
+
- `pick a workspace` → show them `comitia companies` and let them choose with `comitia use`.
|