atris 3.74.4 → 3.74.6
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/FOR_AGENTS.md +12 -12
- package/atris/AGENTS.md +7 -7
- package/atris/CLAUDE.md +10 -10
- package/atris/policies/atris-backend.md +1 -1
- package/atris/policies/atris-design.md +71 -71
- package/atris/policies/design-seed.md +28 -28
- package/atris/policies/writing.md +1 -1
- package/atris/skills/apps/SKILL.md +3 -3
- package/atris/skills/atris-feedback/SKILL.md +2 -2
- package/atris/skills/autopilot/SKILL.md +10 -10
- package/atris/skills/blocks/SKILL.md +16 -16
- package/atris/skills/calendar/SKILL.md +1 -1
- package/atris/skills/clawhub/atris/SKILL.md +4 -4
- package/atris/skills/clawhub/philosophy-of-work/SKILL.md +7 -7
- package/atris/skills/create-app/SKILL.md +18 -18
- package/atris/skills/create-member/SKILL.md +11 -11
- package/atris/skills/design/SKILL.md +1 -1
- package/atris/skills/drive/SKILL.md +25 -25
- package/atris/skills/email-agent/SKILL.md +11 -11
- package/atris/skills/endgame/SKILL.md +33 -33
- package/atris/skills/magic-inbox/SKILL.md +15 -15
- package/atris/skills/notion/SKILL.md +1 -1
- package/atris/skills/ramp/SKILL.md +7 -7
- package/atris/skills/research-search/SKILL.md +7 -7
- package/atris/skills/slides/SKILL.md +7 -7
- package/atris/skills/tidy/SKILL.md +11 -11
- package/atris/skills/wake/SKILL.md +11 -11
- package/atris/skills/writing/SKILL.md +5 -5
- package/atris/team/_template/SOUL.md +3 -3
- package/atris/team/brainstormer/MEMBER.md +2 -2
- package/atris/team/launcher/MEMBER.md +2 -2
- package/atris/team/mission-lead/MISSION.md +7 -7
- package/atris/team/opus-overnight/MISSION.md +16 -16
- package/atris/team/opus-overnight/STEERING.md +5 -5
- package/atris.md +9 -0
- package/bin/atris.js +16 -3
- package/commands/campaign.js +17 -2
- package/commands/card.js +19 -12
- package/commands/engine.js +92 -17
- package/commands/gm.js +30 -0
- package/commands/idea.js +263 -0
- package/commands/init.js +11 -2
- package/commands/land.js +39 -18
- package/commands/mission.js +4 -3
- package/commands/ninety-nine.js +288 -0
- package/commands/one-lap.js +46 -27
- package/commands/reel.js +12 -7
- package/commands/sync.js +10 -2
- package/commands/task.js +4 -2
- package/commands/xp.js +68 -15
- package/commands/zen.js +10 -3
- package/lib/campaign-keep.js +23 -8
- package/lib/campaign-loop.js +24 -5
- package/lib/career-xp-lock.js +61 -0
- package/lib/career-xp-root.js +61 -0
- package/lib/claude-boot-block.js +7 -4
- package/lib/engine-registry.js +139 -1
- package/lib/fleet.js +11 -2
- package/lib/gm-bet.js +734 -42
- package/lib/gm-card.js +431 -0
- package/lib/gm-phone-page.js +486 -717
- package/lib/gm-phone.js +33 -34
- package/lib/gm-season.js +14 -0
- package/lib/headless-chrome.js +39 -0
- package/lib/idea-gate.js +33 -0
- package/lib/idea-inbox.js +220 -0
- package/lib/idea-ledger.js +196 -0
- package/lib/idea-tick.js +384 -0
- package/lib/known-commands.js +1 -1
- package/lib/member-engine.js +1 -0
- package/lib/ninety-nine-sync.js +156 -0
- package/lib/ninety-nine.js +247 -0
- package/lib/opening-lines.js +94 -0
- package/lib/roster-markdown.js +39 -1
- package/lib/roster-models.js +1 -1
- package/lib/roster-swap.js +353 -0
- package/lib/spawn-env.js +29 -2
- package/lib/task-db.js +8 -4
- package/lib/wish-audit.js +14 -0
- package/lib/yes-lock.js +365 -256
- package/lib/zen-apply.js +6 -3
- package/lib/zen.js +28 -1
- package/package.json +1 -1
- package/templates/business-starter/CLAUDE.md +7 -7
- package/templates/business-starter/MAP.md +1 -1
- package/templates/business-starter/TODO.md +1 -1
- package/templates/business-starter/atris.md +2 -2
- package/templates/business-starter/context/README.md +6 -6
- package/templates/business-starter/context/live-workspace.md +1 -1
- package/templates/business-starter/goals.md +1 -1
- package/templates/business-starter/instructions.md +1 -1
- package/templates/business-starter/memory.md +4 -4
- package/templates/business-starter/persona.md +3 -3
- package/templates/business-starter/policies/LESSONS.md +1 -1
- package/templates/business-starter/reports/README.md +1 -1
- package/templates/business-starter/skills/README.md +1 -1
- package/templates/business-starter/team/README.md +1 -1
- package/templates/business-starter/team/START_HERE.md +1 -1
- package/templates/business-starter/team/_template/SOUL.md +3 -3
- package/templates/business-starter/team/comms/SOUL.md +2 -2
- package/templates/business-starter/team/ops/SOUL.md +4 -4
- package/templates/business-starter/team/research/SOUL.md +3 -3
- package/templates/business-starter/wiki/index.md +1 -1
- package/templates/research-canonical/CLAUDE.md +7 -7
- package/templates/research-canonical/MAP.md +1 -1
- package/templates/research-canonical/TODO.md +1 -1
- package/templates/research-canonical/atris.md +2 -2
- package/templates/research-canonical/context/README.md +8 -8
- package/templates/research-canonical/context/live-workspace.md +1 -1
- package/templates/research-canonical/goals.md +2 -2
- package/templates/research-canonical/instructions.md +1 -1
- package/templates/research-canonical/memory.md +4 -4
- package/templates/research-canonical/persona.md +1 -1
- package/templates/research-canonical/policies/LESSONS.md +1 -1
- package/templates/research-canonical/reports/README.md +1 -1
- package/templates/research-canonical/skills/README.md +1 -1
- package/templates/research-canonical/team/README.md +1 -1
- package/templates/research-canonical/team/eval/SOUL.md +1 -1
- package/templates/research-canonical/team/experiment/SOUL.md +2 -2
- package/templates/research-canonical/team/hypothesis/SOUL.md +3 -3
- package/templates/research-canonical/team/literature/SOUL.md +2 -2
- package/templates/research-canonical/wiki/briefs/research-program.md +1 -1
- package/templates/research-canonical/wiki/index.md +1 -1
- package/utils/auth.js +1 -0
|
@@ -5,34 +5,34 @@ version: 1.2.0
|
|
|
5
5
|
tags: [planning, vision, reverse-engineer, atris, wiki, todo, flow]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
> **Sister skill: /flow
|
|
8
|
+
> **Sister skill: /flow**: flow runs the same engine in reverse. flow chains forward from identity (who you are → today's next move). endgame chains backward from horizon (where you're going → today's next move). They meet at the same point: the next thing the agent should ship. Use both. Run flow at sunrise to set identity, run endgame at every TODO.md boundary to set horizon, and let /autopilot tick between them.
|
|
9
9
|
|
|
10
10
|
# /endgame
|
|
11
11
|
|
|
12
|
-
**Purpose:** help the human (or agent) reach their intent and goal **faster** by leveraging what the wiki already knows. Without endgame, they redo thinking. With endgame, they reach the next move in one pass
|
|
12
|
+
**Purpose:** help the human (or agent) reach their intent and goal **faster** by leveraging what the wiki already knows. Without endgame, they redo thinking. With endgame, they reach the next move in one pass, and write that move into TODO.md so the autopilot loop can pursue it without re-asking.
|
|
13
13
|
|
|
14
14
|
Most planning is forward-greedy: *what's the next ticket?* Endgame is backward: *what does winning look like, and what's the shortest path from here?*
|
|
15
15
|
|
|
16
|
-
> "You can't connect the dots looking forward; you can only connect them looking backward."
|
|
16
|
+
> "You can't connect the dots looking forward; you can only connect them looking backward.": Steve Jobs
|
|
17
17
|
|
|
18
|
-
## Step 0
|
|
18
|
+
## Step 0: CHECK FOR EXISTING ENDGAME FIRST
|
|
19
19
|
|
|
20
|
-
Before anything else, read `atris/TODO.md`. If it already has a `## Endgame` section AND uncompleted `[endgame]`-tagged tasks in `## Backlog`, **do not pick a new endgame**. Instead reply: "current endgame `<slug>` still active
|
|
20
|
+
Before anything else, read `atris/TODO.md`. If it already has a `## Endgame` section AND uncompleted `[endgame]`-tagged tasks in `## Backlog`, **do not pick a new endgame**. Instead reply: "current endgame `<slug>` still active, N steps remaining. Run `/autopilot` to continue, or `force /endgame` to reset." Then exit.
|
|
21
21
|
|
|
22
22
|
This rule exists so the loop pursues the current horizon to completion instead of constantly repicking.
|
|
23
23
|
|
|
24
|
-
## Step 1
|
|
24
|
+
## Step 1: READ THE INBOX, WIKI, LOGS
|
|
25
25
|
|
|
26
26
|
Before picking a new horizon, read what already exists. The wiki + logs are the user's paid-for memory; not using them means they're paying twice.
|
|
27
27
|
|
|
28
|
-
- `atris/lessons.md
|
|
29
|
-
- `atris/wiki/STATUS.md
|
|
30
|
-
- `atris/wiki/index.md
|
|
31
|
-
- `atris/wiki/briefs
|
|
32
|
-
- `atris/MAP.md
|
|
33
|
-
- `atris/TODO.md
|
|
34
|
-
- `atris/logs/YYYY
|
|
35
|
-
- `atris/PERSONA.md
|
|
28
|
+
- `atris/lessons.md`: past surprises and failures the validator wrote down. Read this FIRST. Avoid horizons that hit the same rocks.
|
|
29
|
+
- `atris/wiki/STATUS.md`: current state, last loop findings, suggested next ingests
|
|
30
|
+
- `atris/wiki/index.md`: what pages already exist
|
|
31
|
+
- `atris/wiki/briefs/`: most recent cross-cutting brief pages (often already contain a horizon)
|
|
32
|
+
- `atris/MAP.md`: what code exists today
|
|
33
|
+
- `atris/TODO.md`: what's queued, what's done
|
|
34
|
+
- `atris/logs/YYYY/`: last 7-14 days of journals; scan `## Inbox` sections for unfulfilled ideas (these are user-seeded horizons)
|
|
35
|
+
- `atris/PERSONA.md`: current identity (paired with /flow's forward direction)
|
|
36
36
|
- `atris/business/<slug>/BUSINESS.md` if a business workspace
|
|
37
37
|
|
|
38
38
|
**Inbox items are the primary horizon source.** If recent journal `## Inbox` sections have unfulfilled ideas, pick the oldest one and run the three moves on it. Only fall back to reactive signals (wiki staleness, broken refs) if the inbox is empty.
|
|
@@ -41,13 +41,13 @@ If the horizon is genuinely unreadable from those sources, ask **1–3 sharp que
|
|
|
41
41
|
|
|
42
42
|
## The three moves
|
|
43
43
|
|
|
44
|
-
1. **HORIZON
|
|
45
|
-
2. **REVERSE PATH
|
|
46
|
-
3. **NEXT MOVE
|
|
44
|
+
1. **HORIZON**: One paragraph. What does the world look like when we win? Concrete. Falsifiable. Not a slogan.
|
|
45
|
+
2. **REVERSE PATH**: Chain backward from HORIZON. Last move before winning, the one before, etc. **Include eliminate steps**: what gets deleted on the way to the endgame, not just what gets added. Stop when you hit something doable this week. 5–7 links max.
|
|
46
|
+
3. **NEXT MOVE**: The first link in the chain. One concrete action, one session, no hedging.
|
|
47
47
|
|
|
48
|
-
> **v1.1.0 cut:** prior versions had two more moves
|
|
48
|
+
> **v1.1.0 cut:** prior versions had two more moves, `IDENTITY` ("who are we when we've arrived") and `GAP` ("already true vs not yet"). Identity was philosophical overhead; GAP was just the diff between HORIZON and current state, which the wiki + MAP already give you. Three moves is enough. Less drift surface, faster ticks, fewer phrases for the validator to verify.
|
|
49
49
|
|
|
50
|
-
## Step 2
|
|
50
|
+
## Step 2: WRITE TO TODO.md
|
|
51
51
|
|
|
52
52
|
After running the three moves, write the result to `atris/TODO.md`:
|
|
53
53
|
|
|
@@ -64,9 +64,9 @@ After running the three moves, write the result to `atris/TODO.md`:
|
|
|
64
64
|
|
|
65
65
|
**Horizon voice rule (non-negotiable).** The horizon renders verbatim on every boot to whoever opens the workspace: engineer, operator, or a first-day outsider. Write it so a new teammate in any domain gets it on first read: one sentence, plain words, no em dashes, no ids/flags/insider jargon (no "dispatch", "lane", "fast-tier", "receipt path"), and it names the observable proof ("proven the day X happens"). If a term only means something to the people who built the system, translate it or cut it.
|
|
66
66
|
|
|
67
|
-
2. **Add each REVERSE PATH step as a tagged task
|
|
67
|
+
2. **Add each REVERSE PATH step as a tagged task: through the task db when one exists.**
|
|
68
68
|
|
|
69
|
-
**Durable-db workspaces (any repo with `.atris/state/tasks.projection.json` / the `atris task` verb):** markdown task lines written into TODO.md DO NOT SURVIVE
|
|
69
|
+
**Durable-db workspaces (any repo with `.atris/state/tasks.projection.json` / the `atris task` verb):** markdown task lines written into TODO.md DO NOT SURVIVE: the next `atris task render` regenerates the file from the db and silently wipes them (learned 2026-07-12, lesson `endgame-tasks-must-be-durable-db-rows`; the `## Endgame` header block survives, the tasks vanish). Create each step as a real row instead:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
72
|
atris task add "<step description>" --tag endgame
|
|
@@ -107,7 +107,7 @@ Use `T1`, `T2`, `T3` … as IDs (or `W1`/`E1`/etc per endgame domain). Single up
|
|
|
107
107
|
4. **Append the full endgame to today's journal `## Notes`** so the reasoning is preserved:
|
|
108
108
|
|
|
109
109
|
```markdown
|
|
110
|
-
### Endgame picked
|
|
110
|
+
### Endgame picked: HH:MM PDT
|
|
111
111
|
|
|
112
112
|
slug: <slug>
|
|
113
113
|
source: <where>
|
|
@@ -129,14 +129,14 @@ NEXT MOVE
|
|
|
129
129
|
Why this first: <one line>
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
This is the archive
|
|
132
|
+
This is the archive, once the endgame closes, future `/endgame` runs can read this to learn what worked.
|
|
133
133
|
|
|
134
|
-
## Step 3
|
|
134
|
+
## Step 3: ARCHIVE PRIOR ENDGAME (if any)
|
|
135
135
|
|
|
136
136
|
If there was a `## Endgame` section in TODO.md before this run AND all its `[endgame]` tasks are done, append a closing entry to today's journal `## Notes`:
|
|
137
137
|
|
|
138
138
|
```markdown
|
|
139
|
-
### Endgame closed
|
|
139
|
+
### Endgame closed: HH:MM PDT
|
|
140
140
|
|
|
141
141
|
slug: <prior-slug>
|
|
142
142
|
shipped: N/N steps
|
|
@@ -148,7 +148,7 @@ Then remove the old `## Endgame` section from TODO.md before writing the new one
|
|
|
148
148
|
|
|
149
149
|
## Output shape (when called interactively)
|
|
150
150
|
|
|
151
|
-
When a human runs `/endgame` directly (not from a cron tick), show the three moves on screen first, ask one yes/no for confirmation, then write to TODO.md only after the human says go. When called from autopilot at a boundary, skip the confirmation
|
|
151
|
+
When a human runs `/endgame` directly (not from a cron tick), show the three moves on screen first, ask one yes/no for confirmation, then write to TODO.md only after the human says go. When called from autopilot at a boundary, skip the confirmation: write straight to TODO.md and journal it.
|
|
152
152
|
|
|
153
153
|
```
|
|
154
154
|
HORIZON
|
|
@@ -163,7 +163,7 @@ REVERSE PATH
|
|
|
163
163
|
|
|
164
164
|
NEXT MOVE
|
|
165
165
|
[one concrete action, doable in one session]
|
|
166
|
-
Verify: [deterministic check
|
|
166
|
+
Verify: [deterministic check, test, grep, file, exit code]
|
|
167
167
|
Why this first: [one line]
|
|
168
168
|
```
|
|
169
169
|
|
|
@@ -173,7 +173,7 @@ NEXT MOVE
|
|
|
173
173
|
- **Read inbox + wiki first.** The whole point is leveraging what exists.
|
|
174
174
|
- **HORIZON before REVERSE PATH.** Vision before steps.
|
|
175
175
|
- **REVERSE PATH includes eliminate.** Half of strategy is removal. Forward-greedy planning never asks this. Endgame must.
|
|
176
|
-
- **The chain must terminate this week.** If it can't, the horizon is too far
|
|
176
|
+
- **The chain must terminate this week.** If it can't, the horizon is too far: pick a closer one and say so.
|
|
177
177
|
- **5–7 links max in the chain.** More than that = horizon is too vague.
|
|
178
178
|
- **Every task must have a Verify line.** Deterministic check (test, grep, file, exit code). Allows the validator to score the endgame autonomously.
|
|
179
179
|
- **Cite wiki pages** with `[[atris/wiki/...]]` refs.
|
|
@@ -181,11 +181,11 @@ NEXT MOVE
|
|
|
181
181
|
- **One chain, not three.** Pick the shortest defensible one.
|
|
182
182
|
- **No "we could also"** anywhere in NEXT MOVE. There is one move.
|
|
183
183
|
- **Reject mysticism.** Vision is necessary but not sufficient. The chain must be falsifiable and doable.
|
|
184
|
-
- **Tag format is `[endgame]` only
|
|
184
|
+
- **Tag format is `[endgame]` only**, no colons, no slugs in the tag. Slug lives in the section header.
|
|
185
185
|
|
|
186
|
-
## Phase 2
|
|
186
|
+
## Phase 2: agent runs this on itself
|
|
187
187
|
|
|
188
|
-
This skill is designed to be runnable by the agent on its own state, not just by humans. When `atris autopilot` finishes the last `[endgame]` task in the current horizon, the next tick's boundary check invokes `/endgame` against the new state, picks the next horizon from inbox/wiki, writes it to TODO.md, and queues the next move
|
|
188
|
+
This skill is designed to be runnable by the agent on its own state, not just by humans. When `atris autopilot` finishes the last `[endgame]` task in the current horizon, the next tick's boundary check invokes `/endgame` against the new state, picks the next horizon from inbox/wiki, writes it to TODO.md, and queues the next move, without a human pulling the trigger.
|
|
189
189
|
|
|
190
190
|
## When to use vs other skills
|
|
191
191
|
|
|
@@ -208,5 +208,5 @@ This skill is designed to be runnable by the agent on its own state, not just by
|
|
|
208
208
|
- Chain longer than 7 links. Shorten the horizon.
|
|
209
209
|
- Three "next moves." There is one.
|
|
210
210
|
- Quoting goals from a deck. Read the wiki, look at reality.
|
|
211
|
-
- Tagging tasks with `[endgame:slug]
|
|
212
|
-
- Padding with IDENTITY or GAP sections
|
|
211
|
+
- Tagging tasks with `[endgame:slug]`, parser only accepts `[\w+]`, will fail silently.
|
|
212
|
+
- Padding with IDENTITY or GAP sections, those were cut in v1.1.0 as autopilot overhead.
|
|
@@ -10,7 +10,7 @@ tags:
|
|
|
10
10
|
|
|
11
11
|
# Magic Inbox
|
|
12
12
|
|
|
13
|
-
You are an inbox agent. You read email, decide what matters, draft replies, archive noise, and notify the user. You do this using your own intelligence
|
|
13
|
+
You are an inbox agent. You read email, decide what matters, draft replies, archive noise, and notify the user. You do this using your own intelligence. No separate LLM calls needed. You ARE the model.
|
|
14
14
|
|
|
15
15
|
## Bootstrap (ALWAYS Run First)
|
|
16
16
|
|
|
@@ -41,11 +41,11 @@ export ATRIS_TOKEN="$TOKEN"
|
|
|
41
41
|
|
|
42
42
|
Before triaging, ALWAYS read these context files from the skill directory. They tell you who matters and how to behave.
|
|
43
43
|
|
|
44
|
-
- `~/.claude/skills/magic-inbox/contacts.md
|
|
45
|
-
- `~/.claude/skills/magic-inbox/priorities.md
|
|
46
|
-
- `~/.claude/skills/magic-inbox/voice.md
|
|
47
|
-
- `~/.claude/skills/magic-inbox/rules.md
|
|
48
|
-
- `~/.claude/skills/magic-inbox/log.md
|
|
44
|
+
- `~/.claude/skills/magic-inbox/contacts.md`: priority contacts and noise patterns
|
|
45
|
+
- `~/.claude/skills/magic-inbox/priorities.md`: current work streams
|
|
46
|
+
- `~/.claude/skills/magic-inbox/voice.md`: how to write replies
|
|
47
|
+
- `~/.claude/skills/magic-inbox/rules.md`: hard rules that override everything
|
|
48
|
+
- `~/.claude/skills/magic-inbox/log.md`: action log (append after each run)
|
|
49
49
|
|
|
50
50
|
Read ALL context files before scoring. They are your memory.
|
|
51
51
|
|
|
@@ -97,8 +97,8 @@ Using YOUR judgment, score each email:
|
|
|
97
97
|
| 5 | Noise | Archive |
|
|
98
98
|
|
|
99
99
|
**Scoring signals:**
|
|
100
|
-
- Check `contacts.md
|
|
101
|
-
- Check `priorities.md
|
|
100
|
+
- Check `contacts.md`: is sender a priority contact?
|
|
101
|
+
- Check `priorities.md`: is topic related to current work?
|
|
102
102
|
- Has `has_unsubscribe: true` → almost certainly 4-5
|
|
103
103
|
- Addressed directly (not a list) → lean toward 1-3
|
|
104
104
|
- From a real person at a real company → lean toward 1-3
|
|
@@ -146,14 +146,14 @@ Append to `~/.claude/skills/magic-inbox/log.md` what you did this run.
|
|
|
146
146
|
## Summary Format
|
|
147
147
|
|
|
148
148
|
```
|
|
149
|
-
Inbox Triage
|
|
149
|
+
Inbox Triage: 23 emails processed
|
|
150
150
|
|
|
151
151
|
Needs you (2):
|
|
152
|
-
- Suhas (via Maya)
|
|
153
|
-
- Michelle at Stripe
|
|
152
|
+
- Suhas (via Maya): FDE candidate intro. Draft ready. [check drafts]
|
|
153
|
+
- Michelle at Stripe: Build Day March 4, demo opportunity. Draft ready.
|
|
154
154
|
|
|
155
155
|
This week (1):
|
|
156
|
-
- Kim (angel, 9x founder)
|
|
156
|
+
- Kim (angel, 9x founder): intro.co intro. Worth a call.
|
|
157
157
|
|
|
158
158
|
Handled (20):
|
|
159
159
|
- 12 archived (newsletters, marketing)
|
|
@@ -167,7 +167,7 @@ Rules for summary:
|
|
|
167
167
|
- Use real names, not email addresses
|
|
168
168
|
- Include WHY something is important (from context files)
|
|
169
169
|
- For drafts, tell the user to check Gmail drafts
|
|
170
|
-
- Be concise
|
|
170
|
+
- Be concise. This is a briefing, not a report
|
|
171
171
|
- Show the count reduction (was X, now Y)
|
|
172
172
|
|
|
173
173
|
---
|
|
@@ -179,7 +179,7 @@ Follow `voice.md`. General rules:
|
|
|
179
179
|
- Casual, direct, no fluff
|
|
180
180
|
- No "I hope this email finds you well"
|
|
181
181
|
- No "Just circling back" or "Per my last email"
|
|
182
|
-
- Short
|
|
182
|
+
- Short: 2-4 sentences max
|
|
183
183
|
- Match the energy of the incoming email
|
|
184
184
|
- For intros: be warm, suggest a time, keep it to 2 sentences
|
|
185
185
|
- For RSVPs: be enthusiastic, confirm attendance
|
|
@@ -193,7 +193,7 @@ Hard rules that override everything:
|
|
|
193
193
|
1. NEVER auto-send. Always save as draft for user review.
|
|
194
194
|
2. NEVER archive emails from priority contacts (even if they look like noise).
|
|
195
195
|
3. NEVER reply to emails with List-Unsubscribe header.
|
|
196
|
-
4. Always show the user what you did
|
|
196
|
+
4. Always show the user what you did. No silent actions.
|
|
197
197
|
5. If unsure about priority, err toward keeping it (don't archive).
|
|
198
198
|
6. Log every action to log.md.
|
|
199
199
|
|
|
@@ -411,7 +411,7 @@ Common block types for creating content:
|
|
|
411
411
|
|
|
412
412
|
## Important Notes
|
|
413
413
|
|
|
414
|
-
- **Notion tokens don't expire
|
|
414
|
+
- **Notion tokens don't expire.** Once connected, it stays connected
|
|
415
415
|
- **Page IDs**: Notion uses UUIDs like `12345678-abcd-1234-abcd-123456789abc`. You can get them from URLs or search results
|
|
416
416
|
- **Database pages**: When adding rows to a database, the "page" properties must match the database schema
|
|
417
417
|
- **Content = Blocks**: A page's visible content is a list of blocks. Use the blocks endpoint to read/write content
|
|
@@ -11,7 +11,7 @@ tags:
|
|
|
11
11
|
|
|
12
12
|
# Ramp
|
|
13
13
|
|
|
14
|
-
Corporate spend management via Ramp API. No OAuth needed
|
|
14
|
+
Corporate spend management via Ramp API. No OAuth needed: API key auth.
|
|
15
15
|
|
|
16
16
|
## Setup
|
|
17
17
|
|
|
@@ -48,12 +48,12 @@ curl -s "https://api.ramp.com/developer/v1/transactions?page_size=50" \
|
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
Filter params:
|
|
51
|
-
- `from_date` / `to_date
|
|
52
|
-
- `department_id
|
|
53
|
-
- `merchant_id
|
|
54
|
-
- `user_id
|
|
55
|
-
- `min_amount` / `max_amount
|
|
56
|
-
- `state
|
|
51
|
+
- `from_date` / `to_date`: ISO 8601 (e.g. `2026-03-01`)
|
|
52
|
+
- `department_id`: filter by department
|
|
53
|
+
- `merchant_id`: filter by merchant
|
|
54
|
+
- `user_id`: filter by cardholder
|
|
55
|
+
- `min_amount` / `max_amount`: in cents
|
|
56
|
+
- `state`: PENDING, CLEARED, DECLINED
|
|
57
57
|
|
|
58
58
|
### Get Transaction
|
|
59
59
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: research-search
|
|
3
|
-
description: "Fast research sweep
|
|
3
|
+
description: "Fast research sweep: arxiv, semantic scholar, github, web. Finds papers, scores relevance, extracts actionable insights, stores to wiki. Triggers on: research search, find papers, latest research, arxiv, what's new in, sweep papers, research sweep."
|
|
4
4
|
version: 1.0.0
|
|
5
5
|
tags:
|
|
6
6
|
- research
|
|
@@ -10,7 +10,7 @@ tags:
|
|
|
10
10
|
- ingestion
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
# /research
|
|
13
|
+
# /research: Fast Research Sweep
|
|
14
14
|
|
|
15
15
|
Find the latest research on a topic, score it for relevance, extract what you can BUILD with it, store the best finds.
|
|
16
16
|
|
|
@@ -38,24 +38,24 @@ Read `atris/skills/research/program.md` for:
|
|
|
38
38
|
|
|
39
39
|
For the given topic, search ALL of these sources in parallel (use Agent tool for parallelism):
|
|
40
40
|
|
|
41
|
-
**Source A
|
|
41
|
+
**Source A: arxiv API**
|
|
42
42
|
Run via Bash:
|
|
43
43
|
```bash
|
|
44
44
|
python3 atris/skills/research/arxiv_search.py "<topic>" --after 2025-10-01 --limit 20
|
|
45
45
|
```
|
|
46
46
|
Returns JSON array of papers with title, authors, abstract, date, url, categories.
|
|
47
47
|
|
|
48
|
-
**Source B
|
|
48
|
+
**Source B: Semantic Scholar API**
|
|
49
49
|
Run via Bash:
|
|
50
50
|
```bash
|
|
51
51
|
python3 atris/skills/research/scholar_search.py "<topic>" --after 2025-10-01 --limit 20
|
|
52
52
|
```
|
|
53
53
|
Returns JSON array with title, authors, abstract, date, url, citation count, venue.
|
|
54
54
|
|
|
55
|
-
**Source C
|
|
55
|
+
**Source C: Web search**
|
|
56
56
|
Use WebSearch tool: `"<topic>" site:arxiv.org OR site:github.com 2025..2026`
|
|
57
57
|
|
|
58
|
-
**Source D
|
|
58
|
+
**Source D: GitHub**
|
|
59
59
|
Use WebSearch tool: `"<topic>" site:github.com stars:>100 pushed:>2025-10-01`
|
|
60
60
|
|
|
61
61
|
### Step 2: Deduplicate and rank
|
|
@@ -155,7 +155,7 @@ The research program evolves:
|
|
|
155
155
|
1. After each sweep, note which papers scored highest and from which source
|
|
156
156
|
2. If a paper leads to a successful implementation (tracked via /storysim or /autoresearch), boost that topic's weight
|
|
157
157
|
3. If a sweep produces nothing actionable, refine the search queries
|
|
158
|
-
4. The program.md file is the "policy"
|
|
158
|
+
4. The program.md file is the "policy": update it as you learn what works
|
|
159
159
|
|
|
160
160
|
## Rules
|
|
161
161
|
|
|
@@ -69,7 +69,7 @@ curl -s -X POST "https://api.atris.ai/api/integrations/google-slides/presentatio
|
|
|
69
69
|
|
|
70
70
|
## Updating Slides (batch-update)
|
|
71
71
|
|
|
72
|
-
All slide mutations use the batch-update endpoint. This is the most powerful endpoint
|
|
72
|
+
All slide mutations use the batch-update endpoint. This is the most powerful endpoint: it can add slides, insert text, add shapes, images, change formatting, and more.
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
curl -s -X POST "https://api.atris.ai/api/integrations/google-slides/presentations/{id}/batch-update" \
|
|
@@ -308,12 +308,12 @@ Returns `{"pdf_base64": "...", "content_type": "application/pdf"}`.
|
|
|
308
308
|
|
|
309
309
|
## Important Notes
|
|
310
310
|
|
|
311
|
-
- **Shares Drive OAuth
|
|
312
|
-
- **Batch update is everything
|
|
313
|
-
- **Object IDs
|
|
314
|
-
- **Slide size
|
|
315
|
-
- **Images
|
|
316
|
-
- **Templates
|
|
311
|
+
- **Shares Drive OAuth**: no separate connection needed. If Drive is connected, Slides works
|
|
312
|
+
- **Batch update is everything**: all slide mutations (add, edit, delete, style) go through batch-update
|
|
313
|
+
- **Object IDs**: every slide, shape, text box, image has an ID. Get them from `GET /presentations/{id}`
|
|
314
|
+
- **Slide size**: default is 10x5.63 inches (720x406.5 PT). Position elements accordingly
|
|
315
|
+
- **Images**: must be publicly accessible URLs. For private images, upload to Drive first
|
|
316
|
+
- **Templates**: use replaceAllText with `{{placeholder}}` patterns for template-based decks
|
|
317
317
|
|
|
318
318
|
---
|
|
319
319
|
|
|
@@ -11,7 +11,7 @@ tags:
|
|
|
11
11
|
|
|
12
12
|
# /tidy
|
|
13
13
|
|
|
14
|
-
Finds what's rotting in your workspace and fixes it. Not just broken refs
|
|
14
|
+
Finds what's rotting in your workspace and fixes it. Not just broken refs: ghost names, stale lessons, duplicate data, language drift, dead code.
|
|
15
15
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
@@ -30,25 +30,25 @@ Finds what's rotting in your workspace and fixes it. Not just broken refs — gh
|
|
|
30
30
|
|
|
31
31
|
### What to look for
|
|
32
32
|
|
|
33
|
-
**Ghost names
|
|
33
|
+
**Ghost names**: terms that don't match the current identity. Check package.json `name` and `description`, README title, and PERSONA. Grep the codebase for old names (e.g., "atrisDev" when the product is "atris"). Flag any user-facing string that uses a dead name.
|
|
34
34
|
|
|
35
|
-
**Stale wiki pages
|
|
35
|
+
**Stale wiki pages**: pages with `last_compiled` frontmatter where the source files have been modified since. The page content may be wrong.
|
|
36
36
|
|
|
37
|
-
**Broken MAP.md references
|
|
37
|
+
**Broken MAP.md references**: file:line refs that point to code that moved or was deleted. The auto-healer fixes what it can; report what it can't.
|
|
38
38
|
|
|
39
|
-
**Stale lessons
|
|
39
|
+
**Stale lessons**: lessons about bugs that have since been fixed. Grep the named files for the bug pattern. If it's gone, tag the lesson `[resolved]`.
|
|
40
40
|
|
|
41
|
-
**Duplicate scorecards
|
|
41
|
+
**Duplicate scorecards**: same slug appearing twice in scorecards.md. Keep the one with more data, delete the other.
|
|
42
42
|
|
|
43
|
-
**Abandoned tasks
|
|
43
|
+
**Abandoned tasks**: in-progress tasks claimed more than 3 days ago. Either finish them, re-scope them, or delete them.
|
|
44
44
|
|
|
45
|
-
**Orphan docs
|
|
45
|
+
**Orphan docs**: markdown pages under atris/ that nothing links to. They're invisible and probably stale.
|
|
46
46
|
|
|
47
|
-
**Dead exports
|
|
47
|
+
**Dead exports**: functions in module.exports that nothing imports. They add surface area for no reason.
|
|
48
48
|
|
|
49
|
-
**Stale TODO items
|
|
49
|
+
**Stale TODO items**: tasks older than 14 days that haven't moved. Run `isStillTrue` on each. Tag stale ones `[unverified]`.
|
|
50
50
|
|
|
51
|
-
**Empty sections
|
|
51
|
+
**Empty sections**: TODO.md sections with placeholder text like "(empty)" or "(clean)".
|
|
52
52
|
|
|
53
53
|
4. Present findings as a numbered list, sorted by impact. For each:
|
|
54
54
|
- What's wrong (specific file, line, or term)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wake
|
|
3
|
-
description: "Wake a team member by name
|
|
3
|
+
description: "Wake a team member by name, use gm [member] or wake up [member], and run ONE closed-loop tick: boot, inbox, claim, one bounded slice, verify, commit+push, proof, receipt. Optionally dispatch the build to an engine (codex/cursor/devin). Triggers on: gm, good morning, wake up [member], wake the team, run a tick as [member]."
|
|
4
4
|
version: 1.0.0
|
|
5
5
|
tags:
|
|
6
6
|
- wake
|
|
@@ -10,28 +10,28 @@ tags:
|
|
|
10
10
|
- autonomous-org
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
# Wake
|
|
13
|
+
# Wake: one tick of a team member
|
|
14
14
|
|
|
15
15
|
"gm [member]" means: that member does one real unit of work, end to end, with proof. No status theater. If there is nothing real to do, say so and stop.
|
|
16
16
|
|
|
17
17
|
## Resolving the member
|
|
18
18
|
|
|
19
|
-
Look for `atris/team/{member}/` (or `team/{member}/`) in the current repo. If the member has a `WAKE.md`, follow it exactly
|
|
19
|
+
Look for `atris/team/{member}/` (or `team/{member}/`) in the current repo. If the member has a `WAKE.md`, follow it exactly: it overrides this skill. If not, run the default tick below and offer to write a `WAKE.md` from it.
|
|
20
20
|
|
|
21
21
|
Wake-enabled lanes as of 2026-06-12: `neo` (atrisos-backend), `frontend-core-systems` (atrisos-web), `ios-engineer` (terrace), `mission-lead` (project-obelisk).
|
|
22
22
|
|
|
23
23
|
## The tick
|
|
24
24
|
|
|
25
|
-
1. **Boot
|
|
26
|
-
2. **Inbox
|
|
27
|
-
3. **Claim
|
|
28
|
-
4. **Work
|
|
29
|
-
5. **Verify
|
|
30
|
-
6. **Ship
|
|
31
|
-
7. **Receipt
|
|
25
|
+
1. **Boot**: read `MEMBER.md`, `goals.md`, latest log in `logs/`, and `atris/MAP.md`.
|
|
26
|
+
2. **Inbox**: today's log (`atris/logs/{year}/{date}.md`) section `## Feedback inbox`: promote bullets to the plane (`atris task add --tag {product}`), delete promoted bullets.
|
|
27
|
+
3. **Claim**: `atris task queue`; claim the top unclaimed task `--as {member}`. Claimed by someone else → skip, no quick fixes. Nothing unclaimed → find ONE small genuine defect/improvement, add it to the plane, claim that.
|
|
28
|
+
4. **Work**: ONE bounded slice. `git status` first; stage only own files; never destructive git; branch or worktree on shared checkouts. Build-heavy slice? Dispatch to an engine via the `engines` skill. The member still owns verification and the receipt.
|
|
29
|
+
5. **Verify**: run the relevant build/tests. Evidence carries a timestamp.
|
|
30
|
+
6. **Ship**: commit and PUSH to GitHub (at minimum once per completed slice). Then `atris task ready {id} --proof "{evidence}"`.
|
|
31
|
+
7. **Receipt**: one line in today's log. Blocked on a human → `waiting-on-human` task ("WAITING ON {who}: {exact action}"). Nothing to do → say so and end quietly.
|
|
32
32
|
|
|
33
33
|
## Hard rules
|
|
34
34
|
|
|
35
35
|
- Only members claim; visiting agents may add/say/delegate, never claim.
|
|
36
|
-
- Human acceptance (`atris task accept*`) is human-only
|
|
36
|
+
- Human acceptance (`atris task accept*`) is human-only: the CLI enforces it; never spoof agent detection to get past it.
|
|
37
37
|
- One tick per wake. The loop's value is the receipt trail, not the volume.
|
|
@@ -17,11 +17,11 @@ Structured writing process with approval gates.
|
|
|
17
17
|
INBOX → OUTLINE → PANEL → WRITE → PASSES
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
1. **Inbox
|
|
21
|
-
2. **Outline
|
|
22
|
-
3. **Panel
|
|
23
|
-
4. **Write
|
|
24
|
-
5. **Passes
|
|
20
|
+
1. **Inbox**: Capture raw ideas, no structure
|
|
21
|
+
2. **Outline**: Topic skeleton with evidence underneath
|
|
22
|
+
3. **Panel**: AI pokes holes, human approves
|
|
23
|
+
4. **Write**: Section by section, approval each step
|
|
24
|
+
5. **Passes**: Argument (AI), out loud (human), sanity (both)
|
|
25
25
|
|
|
26
26
|
## Key Rules
|
|
27
27
|
|
|
@@ -6,11 +6,11 @@ born: YYYY-MM-DD
|
|
|
6
6
|
|
|
7
7
|
# Soul
|
|
8
8
|
|
|
9
|
-
What this agent believes, values, and has learned
|
|
9
|
+
What this agent believes, values, and has learned, not what it does (that's MEMBER.md) or how it communicates (that's PERSONA.md). This is who it is when the rules run out.
|
|
10
10
|
|
|
11
11
|
## Beliefs
|
|
12
12
|
|
|
13
|
-
What you hold true about your work. Not rules
|
|
13
|
+
What you hold true about your work. Not rules, convictions.
|
|
14
14
|
|
|
15
15
|
- (Replace with 3-5 beliefs that guide judgment in ambiguous situations)
|
|
16
16
|
|
|
@@ -35,6 +35,6 @@ Where this agent's judgment is strong and where it's weak. Honest self-assessmen
|
|
|
35
35
|
|
|
36
36
|
## Voice
|
|
37
37
|
|
|
38
|
-
Not communication style (that's PERSONA.md). This is the inner voice
|
|
38
|
+
Not communication style (that's PERSONA.md). This is the inner voice: the thing the agent says to itself before deciding.
|
|
39
39
|
|
|
40
40
|
- (One sentence that captures how this agent thinks)
|
|
@@ -18,7 +18,7 @@ permissions:
|
|
|
18
18
|
tools: []
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
# Brainstormer
|
|
21
|
+
# Brainstormer: Idea & Reality Shaper
|
|
22
22
|
|
|
23
23
|
> **Source:** Inbox items, raw ideas
|
|
24
24
|
> **Style:** Read `atris/PERSONA.md` for communication style.
|
|
@@ -271,7 +271,7 @@ When you finish a brainstorm session:
|
|
|
271
271
|
**Pattern:** What you learned about the user's thinking style
|
|
272
272
|
```
|
|
273
273
|
|
|
274
|
-
Your log tracks how ideas evolve
|
|
274
|
+
Your log tracks how ideas evolve: the navigator reads it to understand context.
|
|
275
275
|
|
|
276
276
|
---
|
|
277
277
|
|
|
@@ -19,7 +19,7 @@ permissions:
|
|
|
19
19
|
tools: []
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
# Launcher
|
|
22
|
+
# Launcher: The Closer
|
|
23
23
|
|
|
24
24
|
> **Source:** Completed tasks, validation results
|
|
25
25
|
> **Style:** Read `atris/PERSONA.md` for communication style.
|
|
@@ -116,7 +116,7 @@ Launch Checklist:
|
|
|
116
116
|
✓ Journal entry: [timestamp]
|
|
117
117
|
✓ Ready to publish: [where?]
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
SHIPPED!
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
---
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Mission
|
|
1
|
+
# Mission: mission-lead
|
|
2
2
|
|
|
3
3
|
## North Star
|
|
4
4
|
|
|
5
|
-
Find and ship one real, verifiable improvement to `atris-cli` per overnight tick
|
|
5
|
+
Find and ship one real, verifiable improvement to `atris-cli` per overnight tick: bug fix, UX polish, or doc/code drift correction. Push immediately. Don't sit on green commits.
|
|
6
6
|
|
|
7
7
|
## Acceptance
|
|
8
8
|
|
|
@@ -22,11 +22,11 @@ A tick is "done" when:
|
|
|
22
22
|
|
|
23
23
|
## Domains in Order
|
|
24
24
|
|
|
25
|
-
1. **Help-flag handling
|
|
26
|
-
2. **Pluralization / output polish
|
|
27
|
-
3. **Doc drift
|
|
28
|
-
4. **Test hygiene
|
|
29
|
-
5. **Cross-command consistency
|
|
25
|
+
1. **Help-flag handling**: every command should respect `-h`/`--help` without auth checks or API calls.
|
|
26
|
+
2. **Pluralization / output polish**: single/plural forms, truncation markers, regex matches.
|
|
27
|
+
3. **Doc drift**: MAP.md broken refs, CLAUDE.md vs actual command surface.
|
|
28
|
+
4. **Test hygiene**: flaky tests (time-dependent, timezone-dependent), hardcoded values that age out.
|
|
29
|
+
5. **Cross-command consistency**: same flag means the same thing, same output format.
|
|
30
30
|
|
|
31
31
|
## Stop Condition
|
|
32
32
|
|