atris 3.70.0 → 3.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/atris/skills/README.md +1 -0
- package/atris/skills/campaigns/SKILL.md +81 -0
- package/atris/skills/meta/SKILL.md +52 -8
- package/ax +226 -42
- package/bin/atris.js +26 -6
- package/commands/autoland.js +176 -7
- package/commands/autopilot.js +71 -11
- package/commands/campaign.js +759 -0
- package/commands/compile.js +19 -8
- package/commands/doctor.js +58 -0
- package/commands/dream.js +18 -3
- package/commands/engine.js +147 -5
- package/commands/improve.js +119 -9
- package/commands/init.js +18 -1
- package/commands/interview.js +15 -3
- package/commands/land.js +22 -6
- package/commands/link.js +1 -0
- package/commands/member.js +359 -94
- package/commands/mission.js +249 -36
- package/commands/report.js +42 -8
- package/commands/run.js +9 -2
- package/commands/scout.js +9 -1
- package/commands/task.js +71 -17
- package/commands/team.js +212 -4
- package/commands/unknowns.js +15 -1
- package/commands/verify.js +46 -0
- package/commands/worktree.js +108 -15
- package/commands/write.js +12 -1
- package/commands/youtube.js +17 -2
- package/lib/accept-verify-gate.js +1 -0
- package/lib/auto-accept-certified.js +1 -0
- package/lib/autoland.js +13 -4
- package/lib/campaign-cadence.js +131 -0
- package/lib/campaign-core.js +330 -0
- package/lib/campaign-holdout.js +65 -0
- package/lib/campaign-loop.js +242 -0
- package/lib/campaign-missions.js +237 -0
- package/lib/campaign-new.js +251 -0
- package/lib/campaign-protect.js +75 -0
- package/lib/campaign-reading.js +147 -0
- package/lib/campaign-schema.js +196 -0
- package/lib/campaign-store.js +380 -0
- package/lib/campaign-sync.js +302 -0
- package/lib/campaign-trace.js +300 -0
- package/lib/conductor-artifacts.js +15 -1
- package/lib/daily-log.js +11 -1
- package/lib/dispatch-scout.js +18 -0
- package/lib/engine-ask.js +33 -3
- package/lib/engine-registry.js +2 -0
- package/lib/engine-resource.js +518 -0
- package/lib/fleet.js +125 -16
- package/lib/init-commit.js +80 -0
- package/lib/intents.js +8 -0
- package/lib/known-commands.js +1 -1
- package/lib/land-green.js +58 -7
- package/lib/landing-proof.js +352 -0
- package/lib/member-autoland.js +395 -18
- package/lib/member-board.js +7 -1
- package/lib/member-map-fold.js +126 -0
- package/lib/member-map-inbox.js +80 -0
- package/lib/member-progress.js +48 -1
- package/lib/member-report.js +127 -8
- package/lib/member-self-next-job.js +97 -0
- package/lib/member-task-pick.js +41 -14
- package/lib/member-up.js +249 -16
- package/lib/roster-prep.js +25 -2
- package/lib/runner-command.js +5 -0
- package/lib/task-db.js +47 -11
- package/lib/task-explanation.js +7 -0
- package/lib/task-list-keeper.js +8 -1
- package/lib/task-receipt.js +6 -1
- package/mcp/atris-mcp/index.mjs +212 -10
- package/package.json +2 -1
- package/scripts/det/engine-reading.js +37 -0
- package/scripts/det/ytnotes +29 -5
package/README.md
CHANGED
|
@@ -138,6 +138,24 @@ atris member wake 5
|
|
|
138
138
|
atris member wake navigator executor
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
+
Wake only picks jobs that have a test to pass, so members know when they are done. Add one like this:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
atris task new "fix the flaky login test" --verify "node --test test/login.test.js"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Each job gets the time limit set for building in your roster, plus a few minutes for review. To see or change it:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
atris engine roster
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Naming just one member runs one step of work. Add `--keep` to keep that one member working.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
atris member wake executor --keep
|
|
157
|
+
```
|
|
158
|
+
|
|
141
159
|
Sleep stops the members that are awake.
|
|
142
160
|
|
|
143
161
|
```bash
|
package/atris/skills/README.md
CHANGED
|
@@ -34,6 +34,7 @@ cp -r atris/skills/[name] ~/.codex/skills/
|
|
|
34
34
|
| backend | Backend architecture policy | `policies/atris-backend.md` |
|
|
35
35
|
| blocks | Author Atris block documents: docs, decks, reports | - |
|
|
36
36
|
| calendar | Google Calendar via AtrisOS API | - |
|
|
37
|
+
| campaigns | Run a long goal with a judge that fails today, a budget, and seats | - |
|
|
37
38
|
| commerce | Quote a purchase or stock order; the person approves before anything is charged | - |
|
|
38
39
|
| copy-editor | Detects and fixes AI writing patterns | - |
|
|
39
40
|
| create-app | Build and deploy an Atris app from a description | - |
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: campaigns
|
|
3
|
+
description: "Run an Atris campaign: a long goal with a judge that fails today, a budget, and members in seats, worked by missions until the judge passes. Use when the goal takes many runs, needs several members, or must spend under a cap. Triggers on: run a campaign, long goal, big goal, keep going until it passes, campaign, judge, budget, atris campaign."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- campaign
|
|
7
|
+
- judge
|
|
8
|
+
- budget
|
|
9
|
+
- missions
|
|
10
|
+
- mcp
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Campaigns
|
|
14
|
+
|
|
15
|
+
A campaign is a goal plus a judge. The judge is a command that exits 0 only when the goal is met. The campaign runs missions under a budget until the judge passes, the money runs out, or a person has to decide something.
|
|
16
|
+
|
|
17
|
+
## Campaign or mission
|
|
18
|
+
|
|
19
|
+
- **Mission**: one member, one objective, one check. Done in a run or a few ticks.
|
|
20
|
+
- **Campaign**: the goal needs many missions, more than one member, or a spending cap. A campaign decides what to do next; its missions do the work.
|
|
21
|
+
|
|
22
|
+
If one `atris mission start` would finish it, use a mission.
|
|
23
|
+
|
|
24
|
+
## The five commands
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
atris campaign "<goal>" # drafts a judge, proves it fails today, starts on a yes (agents pass --yes; --run keeps going)
|
|
28
|
+
atris campaign run <id> --max-steps 5 # judge, propose missions, run them; stops and says why
|
|
29
|
+
atris campaign show <id> # judge reading, money, missions, open asks, next move
|
|
30
|
+
atris campaign answer <id> <ask-id> "<yes>" # a person answers; agents cannot
|
|
31
|
+
atris campaign sync <id> # share it with the Atris web app and iOS
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`atris campaign "<goal>"` is the same as `atris campaign new "<goal>"`. Already have a judge? Start directly: `atris campaign "<goal>" --judge "<command>"`. A local campaign needs no budget; one that runs in the cloud does (`--budget 20`). Add `--json` to any verb for machine output. `atris campaign` alone lists every campaign and its next move.
|
|
35
|
+
|
|
36
|
+
## Write a good judge
|
|
37
|
+
|
|
38
|
+
1. **Outside the model.** Tests, counts, greps, a build, a local script. Never ask a model whether it is done.
|
|
39
|
+
2. **Fails first.** A judge that passes today is refused: it cannot tell you when the work landed.
|
|
40
|
+
3. **Graded.** Print progress, not just exit status. Lines like `ℹ pass 3` and `ℹ fail 2` become the campaign's answer, so a person sees 3 of 5 instead of "failed".
|
|
41
|
+
4. **Read only and quick.** It runs after every mission. It changes nothing and finishes in minutes.
|
|
42
|
+
|
|
43
|
+
`atris campaign new` writes the judge to `atris/campaigns/<id>/judge.sh`. Read it before you start; edit it if it checks the wrong thing.
|
|
44
|
+
|
|
45
|
+
## The no-reload line
|
|
46
|
+
|
|
47
|
+
Before anything that cannot be undone (sending, paying, deleting, deploying, publishing), stop and ask:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
atris campaign ask <id> "Deploy the billing change to production?"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The campaign waits. `run` stops with `needs you: 1 open ask`. Only a person closes an ask, in their own terminal. An agent that writes an answer leaves the ask open with a warning.
|
|
54
|
+
|
|
55
|
+
## From an MCP client
|
|
56
|
+
|
|
57
|
+
`atris mcp` serves the same verbs as tools: `campaign_list`, `campaign_show`, `campaign_new`, `campaign_start`, `campaign_run` (takes `max_steps`, returns `reason`), `campaign_ask`, `campaign_answer`. Every write is recorded as an agent. `campaign_answer` returns the `person_command` the person runs to close the ask.
|
|
58
|
+
|
|
59
|
+
## 60-second example
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
atris campaign new "every command in bin/atris.js has a --help that exits 0"
|
|
63
|
+
# draft for: every command ...
|
|
64
|
+
# judge sh atris/campaigns/cmp-help-everywhere-1a2b/judge.sh
|
|
65
|
+
# today fails, as it should: pass 41, fail 6
|
|
66
|
+
# start it: atris campaign start 'Help everywhere' --judge 'sh atris/campaigns/cmp-help-everywhere-1a2b/judge.sh' ...
|
|
67
|
+
atris campaign start 'Help everywhere' --judge 'sh atris/campaigns/cmp-help-everywhere-1a2b/judge.sh' --budget 20 --id cmp-help-everywhere-1a2b
|
|
68
|
+
atris campaign run cmp-help-everywhere-1a2b --max-steps 5
|
|
69
|
+
# stopped after 4 steps: finished
|
|
70
|
+
atris campaign show cmp-help-everywhere-1a2b
|
|
71
|
+
# state done (judge passed)
|
|
72
|
+
# answer answered: pass 47, fail 0
|
|
73
|
+
# budget $6.20 spent of $20.00
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Rules
|
|
77
|
+
|
|
78
|
+
- No campaign without a judge that fails today.
|
|
79
|
+
- Only the judge or a person finishes a campaign. An agent saying done changes nothing.
|
|
80
|
+
- Every mission reports what it spent. When the budget is gone, the campaign stops.
|
|
81
|
+
- Bound every run with `--max-steps`, then read the stop reason before running again.
|
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: meta
|
|
3
|
-
description: Metacognition skill for AI agents. Use when starting work, feeling stuck, output feels off, or before complex tasks.
|
|
4
|
-
version: 1.
|
|
3
|
+
description: Metacognition and delegation science skill for AI agents. Use when starting work, coordinating parallel team members, feeling stuck, output feels off, or before complex tasks. Do not use for trivial one-line lookups when the route and fix are already known. Triggers on meta, delegation, coordinate, parallel members, stuck, or self-check.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
tags:
|
|
6
6
|
- meta
|
|
7
7
|
- metacognition
|
|
8
|
+
- delegation
|
|
9
|
+
- coordination
|
|
8
10
|
---
|
|
9
11
|
|
|
10
12
|
# Meta Skill
|
|
11
13
|
|
|
12
|
-
How to be an effective agent. Load this when you need to check yourself.
|
|
14
|
+
How to be an effective agent and coordinator. Load this when you need to check yourself or delegate across a team.
|
|
13
15
|
|
|
14
16
|
## When to activate
|
|
15
17
|
|
|
16
18
|
- Starting a new session (orientation)
|
|
19
|
+
- Delegating work across multiple team members (`atris member run` / `atris member board`)
|
|
17
20
|
- Feeling stuck or uncertain
|
|
18
21
|
- Output feels sloppy or generic
|
|
19
22
|
- Complex task ahead
|
|
20
23
|
- After a mistake
|
|
21
24
|
|
|
25
|
+
## When NOT to activate
|
|
26
|
+
|
|
27
|
+
- Single-file mechanical lookups where `atris/MAP.md` already gives the exact line and command
|
|
28
|
+
- Mid-execution of a single bounded test command that is already passing
|
|
29
|
+
- Routine read-only status checks that require no planning or delegation
|
|
30
|
+
|
|
22
31
|
## Context awareness
|
|
23
32
|
|
|
24
33
|
1. **MAP first** - Read `atris/MAP.md` before any search. It's the index.
|
|
@@ -35,6 +44,29 @@ How to be an effective agent. Load this when you need to check yourself.
|
|
|
35
44
|
| Uncertain about intent | Ask ONE question |
|
|
36
45
|
| Output feels off | Pause, re-read context |
|
|
37
46
|
| Stuck > 2 attempts | Escalate, don't spiral |
|
|
47
|
+
| 3+ independent slices | Delegate in parallel to team members |
|
|
48
|
+
|
|
49
|
+
## The science of delegation
|
|
50
|
+
|
|
51
|
+
When work spans multiple concerns, shift from solo builder to team coordinator:
|
|
52
|
+
|
|
53
|
+
1. **Partition by disjoint files** - Assign each member (`builder`, `architect`, `executor`, `auto-improver`, `orb`) a distinct file set so parallel branches never conflict at merge time.
|
|
54
|
+
2. **Bind a scoped, falsifiable check** - Pass an explicit `--verify "node --test test/[scoped].test.js"` that tests only the files the member touches. Never bind a broad suite that mutates or reads shared global state during a parallel run.
|
|
55
|
+
3. **Launch isolated, bounded runs** - Default to a short bounded window (`--minutes 30`) in an isolated repo copy with independent referee review; use multi-hour `--hours` or `--spend-full-budget --detach` only when the operator explicitly asks for a long or overnight run:
|
|
56
|
+
```bash
|
|
57
|
+
atris member run [member] "[objective]" --runner auto --verify "node --test test/[file].test.js" --minutes 30 --ignite
|
|
58
|
+
```
|
|
59
|
+
4. **Monitor live telemetry, not guesswork** - Watch `atris member board` and `atris member result [member]`. If a member is `quiet` past its cadence or hits a repeated error streak, inspect its log and restaff or ping it via `atris member ping [member] "[guidance]"`.
|
|
60
|
+
5. **Judge diffs, never prose** - Long runs can omit their final text summary even when all files and tests succeeded. Always verify `git status --short`, `git log -n 3`, and run the scoped test command inside the member's repo copy before marking ready or rejecting.
|
|
61
|
+
6. **Close the loop through review gates** - Move verified work to Review with `atris task ready [id] --proof "[command and exit 0]"` and wait for human acceptance (`atris task accept [id]`) or the owner's explicit `atris autoland` policy before merging onto `origin/master` and running `atris member tidy --dry-run`.
|
|
62
|
+
|
|
63
|
+
## Safety and failure handling
|
|
64
|
+
|
|
65
|
+
- **Human approval and landing gate** - Agents prepare proof and move tasks to Review; never run `atris task accept`, never push or merge to `origin/master` without human approval or active owner-enabled `atris autoland`, and never launch multi-hour detached runs unless explicitly requested by the operator.
|
|
66
|
+
- **Protected lanes** - Changes touching auth, billing, session, CSP, security, or production deploy always pause for explicit human review, even when `autoland` is on.
|
|
67
|
+
- **Git hook respect** - If a pre-commit or pre-push hook blocks a commit, stop and fix the root cause. Never bypass hooks with `--no-verify`.
|
|
68
|
+
- **Worktree hygiene** - Never delete a work folder while git locks exist or a process is still active inside it; preview with `atris member tidy --dry-run` before removing merged copies.
|
|
69
|
+
- **Repeated failure breaker** - If a member fails the same check twice in a row, halt that approach, record the cause in `atris/lessons.md`, and restaff with a narrower slice.
|
|
38
70
|
|
|
39
71
|
## Self-correction triggers
|
|
40
72
|
|
|
@@ -44,6 +76,7 @@ Stop and reassess when:
|
|
|
44
76
|
- You're adding features not requested
|
|
45
77
|
- You're explaining instead of doing
|
|
46
78
|
- You've used words like "robust", "comprehensive", "streamlined"
|
|
79
|
+
- Two delegated members are editing the same file
|
|
47
80
|
|
|
48
81
|
## Memory leverage
|
|
49
82
|
|
|
@@ -58,6 +91,7 @@ You can stack skills:
|
|
|
58
91
|
- `meta` + `design` = thoughtful frontend work
|
|
59
92
|
- `meta` + `backend` = careful API design
|
|
60
93
|
- `meta` + `writing` = deliberate prose
|
|
94
|
+
- `meta` + `autopilot` = multi-member parallel execution
|
|
61
95
|
|
|
62
96
|
Meta is the foundation. Domain skills are the specialization.
|
|
63
97
|
|
|
@@ -66,15 +100,23 @@ Meta is the foundation. Domain skills are the specialization.
|
|
|
66
100
|
```
|
|
67
101
|
Orient (read context)
|
|
68
102
|
↓
|
|
69
|
-
Decide (which skill? what pace?)
|
|
103
|
+
Decide (solo or delegate? which skill? what pace?)
|
|
70
104
|
↓
|
|
71
|
-
Act (execute with focus)
|
|
105
|
+
Act (execute with focus or dispatch disjoint members)
|
|
72
106
|
↓
|
|
73
|
-
Check (
|
|
107
|
+
Check (verify diff, scoped tests, and member board)
|
|
74
108
|
↓
|
|
75
|
-
Learn (add to lessons.md if miss)
|
|
109
|
+
Learn (add to lessons.md if miss, promote to skill at 2-3x)
|
|
76
110
|
```
|
|
77
111
|
|
|
112
|
+
## Verification and closure
|
|
113
|
+
|
|
114
|
+
A solo or delegated task is complete only when all four checks pass with concrete evidence on disk:
|
|
115
|
+
1. The scoped test command (`node --test test/[file].test.js`) is run bare (no pipes) and exits `0`.
|
|
116
|
+
2. `git diff --check` exits `0` with no whitespace errors or conflict markers, and `git status --short` shows only declared files changed.
|
|
117
|
+
3. For delegated runs, `atris member board` shows `done ok` (active or quiet runs are still in progress, never complete) and `atris member result [member] --json` points to a passing receipt in `atris/runs/`.
|
|
118
|
+
4. Any modified skill passes `atris skill audit [name]` with `12/12` (0 errors, 0 warnings) and `atris skill eval atris/skills/[name]/SKILL.md` with `passed: true` and all rubric scores `>= 4`.
|
|
119
|
+
|
|
78
120
|
## Anti-patterns
|
|
79
121
|
|
|
80
122
|
- Grepping before MAP check
|
|
@@ -83,6 +125,8 @@ Learn (add to lessons.md if miss)
|
|
|
83
125
|
- Verbose explanations
|
|
84
126
|
- Guessing instead of asking
|
|
85
127
|
- Repeating past mistakes
|
|
128
|
+
- Delegating overlapping files to parallel workers
|
|
129
|
+
- Judging a run by its prose summary instead of its git diff and test exit code
|
|
86
130
|
- Creating skill without symlinking to .claude/skills/ (won't load mid-session)
|
|
87
131
|
|
|
88
132
|
## Skill evolution
|
|
@@ -96,4 +140,4 @@ You're training future agents. Leave the codebase smarter than you found it.
|
|
|
96
140
|
|
|
97
141
|
## One-liner
|
|
98
142
|
|
|
99
|
-
Think before you act. Check yourself. Use the system.
|
|
143
|
+
Think before you act. Partition cleanly when you delegate. Check yourself. Use the system.
|