atris 3.57.4 → 3.58.5
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 +12 -1
- package/atris/skills/clawhub/member-runtime/SKILL.md +9 -9
- package/atris/skills/create-member/SKILL.md +16 -13
- package/atris/skills/design/SKILL.md +27 -4
- package/atris/skills/engines/SKILL.md +55 -12
- package/atris/skills/x-search/SKILL.md +8 -6
- package/atris/skills/youtube/SKILL.md +37 -8
- package/atris/team/brainstormer/MEMBER.md +2 -2
- package/atris/team/executor/MEMBER.md +3 -3
- package/atris/team/launcher/MEMBER.md +4 -4
- package/atris/team/navigator/MEMBER.md +3 -3
- package/atris/team/researcher/MEMBER.md +2 -2
- package/atris/team/validator/MEMBER.md +1 -1
- package/atris.md +14 -0
- package/ax +153 -23
- package/bin/atris.js +78 -30
- package/commands/aeo.js +4 -4
- package/commands/agents.js +1 -1
- package/commands/align.js +12 -12
- package/commands/analytics.js +3 -3
- package/commands/app.js +5 -5
- package/commands/ask.js +175 -0
- package/commands/auth.js +7 -7
- package/commands/autoland.js +29 -5
- package/commands/autopilot-front.js +6 -6
- package/commands/autopilot.js +90 -90
- package/commands/avail.js +5 -5
- package/commands/bench.js +63 -1
- package/commands/browse.js +2 -2
- package/commands/business.js +12 -12
- package/commands/card.js +2 -2
- package/commands/clean.js +13 -13
- package/commands/close.js +3 -3
- package/commands/compile.js +13 -13
- package/commands/computer.js +94 -27
- package/commands/console.js +5 -5
- package/commands/decide.js +1 -1
- package/commands/deck.js +9 -9
- package/commands/drive.js +4 -4
- package/commands/engine.js +173 -19
- package/commands/errors.js +3 -3
- package/commands/experiments.js +18 -1
- package/commands/feed.js +2 -2
- package/commands/feedback.js +4 -4
- package/commands/fleet.js +12 -12
- package/commands/game.js +1 -1
- package/commands/guide.js +49 -0
- package/commands/improve.js +19 -17
- package/commands/init.js +67 -19
- package/commands/interview.js +7 -7
- package/commands/land.js +40 -15
- package/commands/learn.js +12 -12
- package/commands/lesson.js +2 -2
- package/commands/log.js +1 -1
- package/commands/loops.js +4 -4
- package/commands/member.js +75 -50
- package/commands/mission.js +90 -82
- package/commands/one-lap.js +1 -1
- package/commands/pack.js +74 -8
- package/commands/plugin.js +6 -6
- package/commands/probe.js +9 -9
- package/commands/pull.js +35 -35
- package/commands/pulse.js +1 -1
- package/commands/push.js +21 -21
- package/commands/rainmaker.js +1 -1
- package/commands/recap.js +7 -7
- package/commands/reel.js +2 -2
- package/commands/release.js +3 -3
- package/commands/report.js +1 -1
- package/commands/review.js +5 -5
- package/commands/revisions.js +1 -1
- package/commands/run.js +1 -1
- package/commands/scout.js +3 -3
- package/commands/security-review.js +7 -7
- package/commands/serve.js +9 -9
- package/commands/setup.js +1 -1
- package/commands/sign.js +4 -4
- package/commands/signup.js +4 -4
- package/commands/site.js +8 -3
- package/commands/skill.js +6 -6
- package/commands/slop.js +18 -18
- package/commands/social.js +3 -3
- package/commands/soul.js +14 -14
- package/commands/spaceship.js +1 -1
- package/commands/status.js +2 -2
- package/commands/strings.js +13 -13
- package/commands/study.js +4 -4
- package/commands/sync.js +8 -8
- package/commands/task.js +50 -25
- package/commands/teach.js +2 -2
- package/commands/team.js +1 -1
- package/commands/theme.js +2 -2
- package/commands/tree.js +34 -0
- package/commands/truth.js +7 -7
- package/commands/verify.js +12 -12
- package/commands/visualize.js +2 -2
- package/commands/workflow.js +97 -40
- package/commands/worktree.js +1 -1
- package/commands/write.js +9 -9
- package/commands/x-search.js +89 -17
- package/commands/xp.js +6 -3
- package/commands/youtube.js +601 -48
- package/lib/accept-verify-gate.js +3 -3
- package/lib/activity-stream.js +1 -1
- package/lib/auto-accept-certified.js +28 -12
- package/lib/autoland.js +6 -6
- package/lib/bench/engines.js +59 -8
- package/lib/bench/report.js +1 -1
- package/lib/bench/runner.js +204 -5
- package/lib/bench/tree-render.js +76 -0
- package/lib/card.js +1 -1
- package/lib/chat-log-scan.js +1 -1
- package/lib/claude-boot-block.js +2 -0
- package/lib/deck-compose.js +1 -1
- package/lib/deck-history.js +2 -2
- package/lib/deck-layout.js +1 -1
- package/lib/deck-review.js +5 -5
- package/lib/deck-schema.js +1 -1
- package/lib/default-verifier.js +1 -1
- package/lib/developer-api.js +3 -0
- package/lib/engine-ask.js +45 -7
- package/lib/engine-registry.js +15 -2
- package/lib/file-ops.js +1 -1
- package/lib/fleet.js +71 -35
- package/lib/html-render.js +1 -1
- package/lib/intents.js +172 -0
- package/lib/journal.js +1 -1
- package/lib/known-commands.js +2 -2
- package/lib/land-green.js +364 -0
- package/lib/lesson-contradiction.js +2 -2
- package/lib/lesson-preflight.js +1 -1
- package/lib/manifest.js +5 -5
- package/lib/member-alive.js +9 -5
- package/lib/memory-view.js +3 -3
- package/lib/mission-protected-lane.js +1 -1
- package/lib/mission-root.js +2 -2
- package/lib/orb-context.js +10 -10
- package/lib/pack-capabilities.js +861 -3
- package/lib/permission-grants.js +2 -2
- package/lib/policy-lessons.js +6 -6
- package/lib/pulse.js +8 -8
- package/lib/receipt-evidence.js +1 -1
- package/lib/reel.js +1 -1
- package/lib/review-integrity.js +1 -1
- package/lib/runner-command.js +35 -5
- package/lib/scorecard.js +4 -4
- package/lib/security-scan.js +5 -5
- package/lib/self-drive.js +1 -1
- package/lib/site-publish.js +372 -0
- package/lib/site.js +1 -1
- package/lib/slides-deck.js +2 -2
- package/lib/state-detection.js +2 -2
- package/lib/sync-telemetry.js +2 -2
- package/lib/task-db.js +17 -10
- package/lib/task-explanation.js +1 -1
- package/lib/task-proof.js +2 -2
- package/lib/task-receipt.js +3 -3
- package/lib/theme.js +12 -12
- package/lib/todo-fallback.js +3 -3
- package/lib/todo-sections.js +1 -1
- package/lib/tree-hash.js +79 -0
- package/lib/usage.js +1 -1
- package/lib/wish-delegate.js +1 -1
- package/lib/workspace-safety.js +4 -4
- package/lib/workspace-scaffold.js +3 -3
- package/package.json +1 -1
- package/scripts/det/concierge-bakeoff.sh +26 -0
- package/scripts/det/ytquote-repair.js +0 -1
- package/scripts/det/ytrail-race.js +0 -5
- package/scripts/member-operate.mjs +52 -14
- package/scripts/outbound-artifact-gate.js +0 -3
- package/utils/auth.js +0 -3
- package/utils/config.js +0 -1
- package/scripts/det/checklist-score.js +0 -191
package/README.md
CHANGED
|
@@ -99,6 +99,17 @@ Core loop: `plan` -> `do` -> `review`
|
|
|
99
99
|
|
|
100
100
|
Integrates with any agent.
|
|
101
101
|
|
|
102
|
+
### Publish a static site
|
|
103
|
+
|
|
104
|
+
Upload any built static site to an Atris-hosted subdomain. See
|
|
105
|
+
[docs/site-publish.md](docs/site-publish.md) for flags, limits, profiles, and
|
|
106
|
+
troubleshooting.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
atris site publish dist --slug my-site --spa
|
|
110
|
+
atris site publish . --slug my-next-app --profile app --build # Next.js static export
|
|
111
|
+
```
|
|
112
|
+
|
|
102
113
|
## Chat With Atris 2
|
|
103
114
|
|
|
104
115
|
`ax` is the Atris 2 chat and coding-agent CLI. It uses the hosted Atris cloud by default, streams text, shows tool activity, and keeps fresh installs away from local setup.
|
|
@@ -237,7 +248,7 @@ atris business record atris/reports/2026-04-12-operator-recap.md --outcome mixed
|
|
|
237
248
|
- `atris wiki --private` stores local-only sensitive notes under `.atris/presidio/`
|
|
238
249
|
- `atris loop` refreshes `atris/wiki/STATUS.md` and `atris/wiki/log.md`, flags stale/orphan pages, and suggests the next ingest
|
|
239
250
|
- `atris activate` loads the current wiki status so the next session starts with project memory, not just tasks
|
|
240
|
-
- `atris member` keeps team-member identity and learning local-first: `MEMBER.md` is the role contract, `goals.json` is the machine-readable goal/experiment state, `goals.md` is the human readout, and `logs/YYYY-MM-DD.md` records what happened. Use `atris member goal`, `tick`, `status`, `block`, and `review --value 1..5` to test whether a member is making useful progress or needs the operator/orchestrator.
|
|
251
|
+
- `atris member` keeps team-member identity and learning local-first: `MEMBER.md` is the role contract, `goals.json` is the machine-readable goal/experiment state, `goals.md` is the human readout, and `logs/YYYY-MM-DD.md` records what happened. Use `atris member goal`, `tick`, `status`, `block`, and `review <name> <experiment-id> --accept --proof "..." --value 1..5` to test whether a member is making useful progress or needs the operator/orchestrator.
|
|
241
252
|
- `atris codex-goal` is the read-only bridge for native Codex `/goal`: `status` inspects the live goal database, while the legacy `reset` command now refuses every mutation. Active tasks continue in place; completed tasks retain their final goal, and new work or recurring monitors use a new dedicated Codex task.
|
|
242
253
|
- `atris task` keeps durable local task state and append-only events for agents; `atris/TODO.md` is just a regenerated readable board. Run the loop with `atris task new`, `delegate "..." --to <owner>`, `next`, `say`, and `ready <id> --proof "..."`; human approval is `atris task accept <id>` (moves to Done, awards Career XP) or `revise <id> --note "..."`. Final task transitions also append the general daily log and, when a real `atris/team/<member>/MEMBER.md` matches the task owner, that member's daily log. Add `--json` for headless agents, `atris task serve` for the local board, and `atris task show <ref>` / `events --all` for the full ledger. Commands accept semantic refs (`OBL-18`), full IDs, or any unique prefix. In cloud business workspaces, Supabase `tasks` is the source of truth and Swarlo the live claim layer.
|
|
243
254
|
- `atris mission` is the durable autonomy layer: start with an owner, verifier, runner, and stop condition; record bounded work with `mission tick`; close with `mission complete` only after proof. Runners include `manual`, `claude`, `atris2`, and `codex_goal`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: member-runtime
|
|
3
|
-
description: "Load and run MEMBER.md team members -- complete AI workers with persona, skills, tools, context, and a
|
|
3
|
+
description: "Load and run MEMBER.md team members -- complete AI workers with persona, skills, tools, context, and a log that learns over time. Use when you want to activate a team member, run 'be my chief of staff', or manage stateful AI workers."
|
|
4
4
|
version: 1.0.0
|
|
5
5
|
tags:
|
|
6
6
|
- ai-agents
|
|
@@ -12,7 +12,7 @@ tags:
|
|
|
12
12
|
|
|
13
13
|
# Member Runtime
|
|
14
14
|
|
|
15
|
-
This skill teaches you how to load and run MEMBER.md team members. A member is a skill that manages skills -- it bundles a persona, capabilities, tools, permissions, and a
|
|
15
|
+
This skill teaches you how to load and run MEMBER.md team members. A member is a skill that manages skills -- it bundles a persona, capabilities, tools, permissions, and a log that gets smarter over time.
|
|
16
16
|
|
|
17
17
|
Format spec: https://github.com/atrislabs/member
|
|
18
18
|
|
|
@@ -26,7 +26,7 @@ team/{name}/
|
|
|
26
26
|
skills/ # What they can do (SKILL.md files)
|
|
27
27
|
context/ # What they know (domain knowledge)
|
|
28
28
|
tools/ # What they use (API docs, configs)
|
|
29
|
-
|
|
29
|
+
logs/ # What they've learned (grows over time)
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
## How to Load a Member
|
|
@@ -61,23 +61,23 @@ For each skill in the frontmatter `skills` list:
|
|
|
61
61
|
|
|
62
62
|
Read all markdown files in `team/{name}/context/`. These are domain knowledge the member references while working -- playbooks, reference docs, default preferences. Load them into your working context.
|
|
63
63
|
|
|
64
|
-
### 5. Read the
|
|
64
|
+
### 5. Read the log
|
|
65
65
|
|
|
66
66
|
This is what makes members stateful. Before doing anything:
|
|
67
67
|
|
|
68
68
|
1. Search memory for past entries from this member: `memory_search("{member-name} preferences patterns")`
|
|
69
|
-
2. Read today's and yesterday's memory files for recent
|
|
69
|
+
2. Read today's and yesterday's memory files for recent log entries
|
|
70
70
|
3. Read `MEMORY.md` for durable preferences this member has recorded
|
|
71
71
|
|
|
72
|
-
If no
|
|
72
|
+
If no log entries exist (first run), proceed with defaults from `context/preferences.md`.
|
|
73
73
|
|
|
74
74
|
### 6. Become the member
|
|
75
75
|
|
|
76
76
|
Adopt the persona, workflow, and rules from the MEMBER.md body. You are now this member. Follow their workflow step by step. Respect their permissions -- if `can-send: false`, draft but don't send.
|
|
77
77
|
|
|
78
|
-
### 7. Write the
|
|
78
|
+
### 7. Write the log
|
|
79
79
|
|
|
80
|
-
After completing the task, write a
|
|
80
|
+
After completing the task, write a log entry to `logs/YYYY-MM-DD.md`:
|
|
81
81
|
|
|
82
82
|
```markdown
|
|
83
83
|
## {member-name} - {date}
|
|
@@ -100,7 +100,7 @@ The member's `permissions` field declares intent. Enforce it:
|
|
|
100
100
|
|
|
101
101
|
## Multiple Members
|
|
102
102
|
|
|
103
|
-
Users can install multiple members. Each has its own persona, skills, and
|
|
103
|
+
Users can install multiple members. Each has its own persona, skills, and log entries. When switching between members, load the new member's MEMBER.md fresh -- don't carry over the previous member's persona.
|
|
104
104
|
|
|
105
105
|
To list installed members: scan `team/` for MEMBER.md files and flat .md files.
|
|
106
106
|
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: create-member
|
|
3
3
|
description: "Create and manage AI team members using the MEMBER.md format. Use when the user wants to define a new AI role, set up a team member, create an agent persona, or work with team/MEMBER.md files."
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
tags:
|
|
6
|
-
- team
|
|
7
|
-
- member
|
|
8
|
-
- agent
|
|
9
|
-
- persona
|
|
10
4
|
---
|
|
11
5
|
|
|
12
6
|
# Member Creator
|
|
@@ -25,13 +19,18 @@ Spec: https://github.com/atrislabs/member
|
|
|
25
19
|
team/<name>/
|
|
26
20
|
├── MEMBER.md REQUIRED Persona + role + permissions
|
|
27
21
|
├── SOUL.md REQUIRED Identity, values, lessons — who the agent is
|
|
28
|
-
├──
|
|
22
|
+
├── MISSION.md REQUIRED Durable purpose and goal-selection rule
|
|
23
|
+
├── goals.json REQUIRED Machine-readable goal state
|
|
24
|
+
├── goals.md REQUIRED Human-readable goal state
|
|
25
|
+
├── logs/ REQUIRED Dated continuity receipts
|
|
26
|
+
│ └── YYYY-MM-DD.md
|
|
27
|
+
├── skills/ REQUIRED SKILL.md files (may start empty)
|
|
29
28
|
│ └── <skill>/
|
|
30
29
|
│ └── SKILL.md
|
|
31
|
-
├── tools/
|
|
30
|
+
├── tools/ REQUIRED MCP servers, API docs, CLI docs (may start empty)
|
|
32
31
|
│ ├── .mcp.json
|
|
33
32
|
│ └── <tool>.md
|
|
34
|
-
└── context/
|
|
33
|
+
└── context/ REQUIRED Domain knowledge (may start empty)
|
|
35
34
|
└── *.md
|
|
36
35
|
```
|
|
37
36
|
|
|
@@ -52,12 +51,16 @@ Ask the user:
|
|
|
52
51
|
team/<name>/
|
|
53
52
|
├── MEMBER.md
|
|
54
53
|
├── SOUL.md
|
|
54
|
+
├── MISSION.md
|
|
55
|
+
├── goals.json
|
|
56
|
+
├── goals.md
|
|
57
|
+
├── logs/
|
|
55
58
|
├── skills/
|
|
56
59
|
├── tools/
|
|
57
60
|
└── context/
|
|
58
61
|
```
|
|
59
62
|
|
|
60
|
-
Use kebab-case for the name. Create
|
|
63
|
+
Use kebab-case for the name. Create the full bundle in one operation, even when the directories and goal list start empty. Never overwrite existing identity, mission, goal, or log files while backfilling a member.
|
|
61
64
|
|
|
62
65
|
### Step 3: Write SOUL.md
|
|
63
66
|
|
|
@@ -167,15 +170,15 @@ Drop markdown files into `context/` with domain knowledge the member needs:
|
|
|
167
170
|
|
|
168
171
|
No special format. Just markdown files the member references.
|
|
169
172
|
|
|
170
|
-
## Flat
|
|
173
|
+
## Legacy Flat Files
|
|
171
174
|
|
|
172
|
-
|
|
175
|
+
Flat files are a legacy input only:
|
|
173
176
|
|
|
174
177
|
```
|
|
175
178
|
team/<name>.md
|
|
176
179
|
```
|
|
177
180
|
|
|
178
|
-
|
|
181
|
+
Do not create new flat-file members. Upgrade an existing flat file with `atris member upgrade <name>` so it receives the complete directory bundle without losing its MEMBER.md content.
|
|
179
182
|
|
|
180
183
|
## Detection
|
|
181
184
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design
|
|
3
3
|
description: Frontend aesthetics policy. Use when building UI, components, landing pages, dashboards, or any frontend work. Prevents generic ai-generated look.
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.2.16
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob
|
|
6
6
|
tags:
|
|
7
7
|
- design
|
|
@@ -45,7 +45,7 @@ Font alternatives: instead of Inter: Instrument Sans, Plus Jakarta Sans, Outfit.
|
|
|
45
45
|
|
|
46
46
|
**Scroll:** never override native scroll. use "peeking" (show a few px of next section) instead of full-screen hero + scroll arrow.
|
|
47
47
|
|
|
48
|
-
**Responsive:** mobile-first. touch targets 44x44px minimum. no text under 14px on mobile. no horizontal scroll. container queries over media queries for components. adapt, don't amputate.
|
|
48
|
+
**Responsive:** mobile-first. touch targets 44x44px minimum. no text under 14px on mobile. no horizontal scroll. container queries over media queries for components. adapt, don't amputate. compact overlays clear the full measured header stack; never anchor them from a guessed single header height.
|
|
49
49
|
|
|
50
50
|
**Accessibility:** 4.5:1 contrast for text, 3:1 for UI (WCAG AA). visible focus indicators always. semantic HTML. never use color alone as an indicator. keyboard nav with logical tab order.
|
|
51
51
|
|
|
@@ -57,7 +57,9 @@ Font alternatives: instead of Inter: Instrument Sans, Plus Jakarta Sans, Outfit.
|
|
|
57
57
|
|
|
58
58
|
**Hierarchy:** 2-3 text levels max. don't mix 5 competing styles.
|
|
59
59
|
|
|
60
|
-
**No all-caps. ever.** never use the `uppercase` tailwind class, `text-transform: uppercase`, or shout-cased copy on
|
|
60
|
+
**No all-caps. ever.** never use the `uppercase` tailwind class, `text-transform: uppercase`, or shout-cased copy on labels, section headers, buttons, badges, or anywhere else. random capitalized text mid-page reads as average ai-generated slop. write labels in sentence case ("Active tasks", not "ACTIVE TASKS") and let copy render as authored.
|
|
61
|
+
|
|
62
|
+
**No eyebrow metadata.** Do not place tiny index, category, status, or implementation-type strips above real content. If the name changes the next action, make it a readable heading. If it does not, remove it. Generator metadata belongs in machine contracts and inspectors, never on the product canvas.
|
|
61
63
|
|
|
62
64
|
**Copy:** no em dashes (the character, U+2014) anywhere in UI copy. no hedge words, no hype adverbs (the "-lessly" family). plain sentences a human would type.
|
|
63
65
|
|
|
@@ -106,13 +108,33 @@ Every entry: id, rule, detector, status. A detector is a regex/command a gate ca
|
|
|
106
108
|
| D5 | no pulsing status dots outside loading skeletons | pulse class scan outside loading/skeleton files | graduated (design-gate) |
|
|
107
109
|
| D6 | no arbitrary hex in color utilities, use brand vars | hex-in-color-utility scan | graduated (design-gate) |
|
|
108
110
|
| D7 | no em dashes in UI copy or prose | U+2014 scan | graduated (atris slop) |
|
|
109
|
-
| D8 | no claude-beige backgrounds, no instrument serif as default | judgment |
|
|
111
|
+
| D8 | no claude-beige backgrounds, no instrument serif as default | judgment | promoted |
|
|
110
112
|
| D9 | fuzzy wish gets translated to craft vocabulary and echoed back before building | judgment | active |
|
|
111
113
|
| D10 | measured tokens over vibes: new components start from a measured recipe (exact colors, spacing, radii, type from a proven source), never from scratch | judgment | active |
|
|
112
114
|
| D11 | layout contracts, not dioramas: min-height over fixed height, fluid max-width over fixed px, every overflow reachable (scroll or +N more), stress-test with hostile content before shipping | judgment | active |
|
|
113
115
|
| D12 | one accent moment per card: brand accent for the primary action only, gold for confidence/progress fills, green only for completed; everything else tonal | judgment | active |
|
|
114
116
|
| D13 | motion is calm and eased: 120-300ms ease-out on opacity/transform only, loops match a measured source cadence, prefers-reduced-motion always freezes them | judgment | active |
|
|
115
117
|
| D14 | compact selectors lead with the chosen name and a discriminating icon; remove redundant field labels and visible type explanations when icon, title, and accessible label carry them | judgment | active |
|
|
118
|
+
| D15 | copy density on landing pages: hero lede one sentence, one sentence per feature card, one line per FAQ answer, legal in one short footer paragraph; a section paragraph past ~40 words gets cut or moved one click deep (Keshav 2026-09-01: "SO much blabber yap text. keep it clean") | `<p>` in landing html over 60 words flags; otherwise judgment | active |
|
|
119
|
+
| D16 | verify mobile with real device emulation (Playwright iPhone profile, WebKit for iOS), never headless Chrome --window-size: Chrome floors the window at 500px wide and renders a fake layout (caught 2026-09-01: two "passing" screenshots hid a broken phone nav) | command scan for `--window-size=3` or `--window-size=4` in verify scripts | active |
|
|
120
|
+
| D15 | first viewport restraint: one dominant idea, at most one secondary live region, and everything else behind progressive disclosure; reject permanent three-column cockpit density as default SaaS structure | judgment | active |
|
|
121
|
+
| D16 | one alignment contract per component: wrapper, metadata, controls, and rendered content share the same width and inset source at every viewport | judgment | active |
|
|
122
|
+
| D17 | responsive corrections must test every disclosed state immediately below, at, and above each breakpoint; a fixed bug cannot reappear when a panel opens or the container narrows | judgment | promoted |
|
|
123
|
+
| D18 | no eyebrow metadata or tiny titles: important names become readable headings; indices, platform type names, and generator metadata stay off product surfaces | judgment | promoted |
|
|
124
|
+
| D19 | bubbly flat UI means one generous rounded parent, flat content-rail rows, and circular controls with a real action or stable identity; never round every nested child | judgment | active |
|
|
125
|
+
| D20 | compound controls own one visible focus shape on the outer geometry; a borderless child field may suppress its ring only when the parent provides `:focus-within` proof | judgment | active |
|
|
126
|
+
| D21 | the reusable web component layer must match the product runtime: React and Next.js are canonical for Atris web; custom elements are compatibility code, never the source of truth | React field and function scan | graduated (component contract) |
|
|
127
|
+
| D22 | every documented component prop must be proven with the standalone package stylesheet; demo-only CSS cannot be the hidden implementation of a public layout contract | standalone prop selector scan | graduated (component contract) |
|
|
128
|
+
| D23 | an owner dashboard should begin as a project save state: current story, one resume action, active missions, and the responsible team; spatial world maps are earned later by real geography or dependency data | judgment | active |
|
|
129
|
+
| D24 | `Since you left` is a learning and cleanup receipt, not a feature changelog: show what the system learned, removed, and carried forward so the human can stay present | judgment | active |
|
|
130
|
+
| D25 | game-like dashboards use plain outcomes, visible stakes, and one obvious next action; invented quest names and internal loop language hide the work instead of clarifying it | judgment | active |
|
|
131
|
+
| D26 | execution receipts read in causal order: inspect inputs, reason, change, then verify; never reverse the activity list or lead with the outcome | judgment | active |
|
|
132
|
+
| D27 | in a compact composer, the send action must visibly dominate adjacent attachment and voice controls through size and accent while secondary controls remain full touch targets | judgment | active |
|
|
133
|
+
| D28 | sibling icon controls on one composer rail share a single explicit frame and alignment anchor; glyph size alone must never determine their centers | judgment | active |
|
|
134
|
+
| D29 | hide voice playback until its voice clears the product quality bar; a weak fallback control is worse than no control | judgment | active |
|
|
135
|
+
| D30 | a floating rounded composer inherits the page canvas; never paint a full-width contrast band behind it unless that band is intentional chrome | judgment | active |
|
|
136
|
+
| D31 | developer-only overlays stay off the product surface by default; any temporary visible launcher must have an immediate dismiss control | judgment | active |
|
|
137
|
+
| D32 | before changing repeated UI copy, verify the operator's exact executable and surface; matching labels do not prove the installed app, dev app, header, and composer share one live path | judgment | active |
|
|
116
138
|
|
|
117
139
|
Measured recipes live in the mimic studies: `~/arena/mimic-beautiful-ui/LESSONS.md` (18 AI-interface components with exact tokens) and its `remix.css` :root block (the portable Atris token sheet, coffee + paper themes). Start there before designing an agent surface.
|
|
118
140
|
|
|
@@ -154,3 +176,4 @@ This skill compounds or it dies. The contract, every frontend session:
|
|
|
154
176
|
- Full policy: `atris/policies/atris-design.md`
|
|
155
177
|
- Navigation: `atris/MAP.md`
|
|
156
178
|
- Workflow: `atris/PERSONA.md`
|
|
179
|
+
| D15 | marketing front pages: headline + one 2-line paragraph + buttons per section, card copy max 2 sentences, long artifacts live one click deep (Keshav 2026-08-31 "aggressive amounts of texts still", inspiration Oscar/Headway) | judgment | active |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: engines
|
|
3
|
-
description: "Dispatch work to an installed terminal agent or named Atris engine profile. Supports Atris Fast, Claude, Codex, Cursor, Fable, Composer, Haiku, Devin, Grok,
|
|
4
|
-
version: 1.
|
|
3
|
+
description: "Dispatch work to an installed terminal agent or named Atris engine profile. Supports Atris Fast, Claude, Codex, Cursor, Fable, Composer, Haiku, Devin, Grok, Antigravity (agy), and opencode. Triggers on: use codex, use cursor, use devin, use grok, use agy, use antigravity, use gemini, gemini session, use fable, use claude, use opencode, use atris, engine, dispatch to, worker agent, second opinion build."
|
|
4
|
+
version: 1.5.1
|
|
5
5
|
tags:
|
|
6
6
|
- engines
|
|
7
7
|
- claude
|
|
@@ -15,13 +15,14 @@ tags:
|
|
|
15
15
|
- agy
|
|
16
16
|
- antigravity
|
|
17
17
|
- gemini
|
|
18
|
+
- opencode
|
|
18
19
|
- atris
|
|
19
20
|
- orchestration
|
|
20
21
|
---
|
|
21
22
|
|
|
22
23
|
# Engines — interchangeable terminal workers
|
|
23
24
|
|
|
24
|
-
One contract,
|
|
25
|
+
One contract, eleven live profiles. The orchestrator writes a bounded task prompt, dispatches it to an engine, then **independently verifies, lands, and pushes** the result. Engines never self-certify.
|
|
25
26
|
|
|
26
27
|
## three verbs
|
|
27
28
|
|
|
@@ -29,12 +30,30 @@ One contract, ten live profiles. The orchestrator writes a bounded task prompt,
|
|
|
29
30
|
- build: `atris engine <name> <task-id>`
|
|
30
31
|
- switch: `atris engine <name>`
|
|
31
32
|
|
|
32
|
-
##
|
|
33
|
+
## FABLE: use the Atris profile
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
FABLE is a canonical Atris CLI engine profile, not a model nickname. When the
|
|
36
|
+
operator asks for Fable's take, opinion, critique, or second perspective, use:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
atris engine fable "<bounded question>"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This routes through `lib/engine-ask.js`, which supplies the read-only preamble,
|
|
43
|
+
bounded tools, plan permission mode, safe mode, no session persistence, live
|
|
44
|
+
logs, a receipt, and engine-health classification. The CLI owns the underlying
|
|
45
|
+
Claude invocation through the `fable` profile in `lib/runner-command.js`.
|
|
46
|
+
|
|
47
|
+
Do not replace this with raw `claude -p` and call the result FABLE. Do not impose
|
|
48
|
+
one global timeout either. Use the CLI default for bounded asks. For deep
|
|
49
|
+
architecture work, repo-wide reviews, or evidence-heavy judgment, choose a
|
|
50
|
+
deliberately longer `--timeout` based on the scope, up to the CLI limit, and keep
|
|
51
|
+
waiting while FABLE is making progress. FABLE quality can require time; the
|
|
52
|
+
timeout is a safety boundary, not a speed target.
|
|
53
|
+
|
|
54
|
+
On failure, inspect the Atris receipt and report it plainly. Retry once with a
|
|
55
|
+
larger bound only when the evidence shows the bound was too short. Never silently
|
|
56
|
+
substitute raw Claude or another engine and call the result FABLE.
|
|
38
57
|
|
|
39
58
|
## Raw binary fallback and debugging
|
|
40
59
|
|
|
@@ -46,25 +65,28 @@ Raw spawns are not the default because they skip Atris receipts, watch, and coac
|
|
|
46
65
|
| Claude | `claude -p "<prompt>"` | Uses the local Claude configuration. Add `--model opus` for maximum-depth review or `--model sonnet` for speed. |
|
|
47
66
|
| Codex | `codex exec --dangerously-bypass-approvals-and-sandbox -o <result-file> "<prompt>"` (run from the target repo/worktree; read-only research: `--sandbox read-only`) | Headless, exits when done — run it as a tracked background Bash task like the other engines and completion auto-wakes the session. Final answer lands in the `-o` file. Verified live 2026-08-11. Outside a git repo add `--skip-git-repo-check` or it exits 1. ONE-SHOT SESSIONS (`claude -p` workers): run codex in the FOREGROUND and wait — a one-shot session never wakes again, so backgrounding strands the result (observed 2026-08-11). The old plugin path (`codex-companion.mjs task --background`) is deprecated for dispatch: its job store never notifies the session (a finished result sat unread overnight, 2026-08-10) |
|
|
48
67
|
| Cursor | `cursor-agent --trust -p "<prompt>"` (run from the target repo) | Headless print mode; `--trust` required for non-interactive |
|
|
49
|
-
| Fable | `
|
|
68
|
+
| Fable | `atris engine fable "<question>"` | Canonical read-only FABLE ask with guards, live log, receipt, and health tracking. Scale `--timeout` to the work when needed. |
|
|
50
69
|
| Composer | `atris run "<objective>" --engine composer` | Fast navigator/executor profile routed through the installed `ax` binary. |
|
|
51
70
|
| Haiku | `claude -p "<prompt>" --model claude-haiku-4-5` | Fast validation and bounded read-only checks. |
|
|
52
71
|
| Devin | `devin -p --permission-mode dangerous -- "<prompt>"` (run from the target repo) | Default permission mode is read-only for writes — build work NEEDS `--permission-mode dangerous`, so only run it in an isolated worktree. Also `devin cloud` for sessions that outlive this machine. Supports `--model swe-1.7` |
|
|
53
72
|
| Grok | `grok --always-approve -p "<prompt>"` (run from the target repo) | Headless single-turn via `-p`; default model grok-4.6. Very fast on lookups (~5-10s, reads MAP first). Great for quick second opinions; use `--best-of-n <N>` for tricky bounded builds. Uses grok.com login |
|
|
54
73
|
| Antigravity | `agy --mode accept-edits --add-dir "$PWD" -p "<prompt>"` (run from the target repo) | `agy` executor profile; also answers to "gemini". **`--add-dir` is mandatory for writes** — without it agy edits its own scratch folder (`~/.gemini/antigravity-cli/scratch/`) and the project never changes, which looks like a silent failure (verified live 2026-08-28). Use `--mode plan --sandbox` for read-only review, `--model <id>` to pin a model, and `--dangerously-skip-permissions` if a build still stalls on an approval prompt. |
|
|
74
|
+
| opencode | `opencode run "<prompt>"` (read-only ask: `opencode run --agent plan "<prompt>"`) | Headless print mode; exits when done. Pin a model with `-m provider/model`. Build work needs `--auto` to auto-approve permissions (dangerous: run in an isolated worktree). Verified live 2026-08-21, ~7s per plan-mode lookup. |
|
|
55
75
|
|
|
56
76
|
Headless dispatch permissions (verified 2026-08-11): `codex exec`, `grok`, and `cursor-agent` are allowlisted in `~/.claude/settings.json` so fresh and one-shot sessions can dispatch without a human approval click. A cold session that gets "requires approval" on an engine command means that allowlist regressed.
|
|
57
77
|
|
|
58
78
|
## Picking an engine
|
|
59
79
|
|
|
60
80
|
- **Atris Fast** — cheap bounded lookups, single-file facts, small verified edits, and high-volume fan-out.
|
|
61
|
-
- **
|
|
81
|
+
- **FABLE** — strongest judgment lane. Use the canonical Atris profile for deep review, synthesis, validation, and complex builds.
|
|
82
|
+
- **Claude** — direct Claude profile when the operator names Claude rather than FABLE.
|
|
62
83
|
- **Codex** — deep root-cause work, long autonomous builds, second-opinion diagnosis. Slowest; runs sandboxed.
|
|
63
84
|
- **Cursor** — fast bounded edits and refactors in a single repo.
|
|
64
85
|
- **Composer / Haiku** — fast, bounded navigation, edits, and validation where a max-tier model would be wasteful.
|
|
65
86
|
- **Devin** — multi-step feature work; use `cloud` when the run should survive laptop sleep.
|
|
66
87
|
- **Grok** - fastest frontier lookups and quick second opinions (grok-4.6, ~5-10s; reads MAP first); use `--best-of-n` for tricky bounded builds. Uses grok.com login.
|
|
67
88
|
- **Antigravity / agy** — flexible executor work across Gemini, Claude, and GPT-OSS models; use `agy` as the canonical short name.
|
|
89
|
+
- **opencode** — multi-provider executor in one CLI (Claude, GPT, Gemini, DeepSeek menus via `opencode models`); plan agent for read-only asks, `--auto` builds only inside an isolated worktree.
|
|
68
90
|
- Parallel builds across repos: one engine job per repo, never two engines writing the same checkout.
|
|
69
91
|
|
|
70
92
|
## Models worth pinning (verified live 2026-08-15)
|
|
@@ -73,8 +95,7 @@ Each engine CLI can pin a specific model. Current best picks:
|
|
|
73
95
|
|
|
74
96
|
| Engine | Flag | Best models today |
|
|
75
97
|
|--------|------|-------------------|
|
|
76
|
-
| Claude | `--model opus` | `opus`
|
|
77
|
-
| Fable | `--model claude-fable-5` | Canonical Fable 5 route; `atris engine fable` pins it automatically |
|
|
98
|
+
| Claude / Fable | `--model opus` | `opus` currently resolves to Opus 5; use the explicit Opus 4.8 identifier only for reproducibility |
|
|
78
99
|
| Devin | `--model swe-1.7` | `swe-1.7` (free right now: use it as the volume executor for parallel bounded slices), `swe-1.7-lightning` for speed |
|
|
79
100
|
| Cursor | `--model cursor-grok-4.6-xhigh` | `cursor-grok-4.6-xhigh` for second-opinion builds, `cursor-grok-4.6-high-fast` for quick pinned asks (answered in ~12s live 2026-08-12), `composer-2.5` for fast edits; parameterized Claude via `'claude-opus-4-8[effort=high]'`; `--list-models` shows the full menu |
|
|
80
101
|
| Composer | `--engine composer` | `composer 2.5` through the Atris profile |
|
|
@@ -82,6 +103,7 @@ Each engine CLI can pin a specific model. Current best picks:
|
|
|
82
103
|
| Grok | (default) | `grok-4.6` default (confirmed live 2026-08-12, ~5s lookup), `grok-4.5` still available via `-m` |
|
|
83
104
|
| Codex | `-m <model>` | CLI default rides `~/.codex/config.toml`; pin with `-m` only when the task needs it |
|
|
84
105
|
| Antigravity / agy | `--model <id>` | `gemini-3.7-flash-high` for speed, `gemini-3.1-pro-high` for depth, `claude-sonnet-4-6`, `claude-opus-4-6-thinking`, or `gpt-oss-120b-medium` |
|
|
106
|
+
| opencode | `-m <provider/model>` | `opencode/big-pickle`, `opencode/gpt-5.2`, `opencode/claude-opus-4-8`; `opencode models` lists the live menu |
|
|
85
107
|
| Atris Fast | (fixed) | api.atris.ai fast lane |
|
|
86
108
|
|
|
87
109
|
Re-verify this table when a lab ships a new model: run each CLI's model-list command, smoke one lookup, and update the row. Free-tier windows (like swe-1.7 now) are the moment to fan out volume work.
|
|
@@ -97,6 +119,27 @@ Run `atris engine doctor`, then `atris engine --help`. The canonical profiles li
|
|
|
97
119
|
|
|
98
120
|
## Prompt contract (every dispatch)
|
|
99
121
|
|
|
122
|
+
Before build, fetch and identify the configured remote default, compare the
|
|
123
|
+
checkout to it, and preserve unrelated work. Record the base before editing.
|
|
124
|
+
Use the existing feature packet and functional owner; link source task IDs
|
|
125
|
+
across workspaces rather than copying a second plan. Load the relevant owner
|
|
126
|
+
bundle once. Live `atris task` records are truth; TODO.md is a rendered view.
|
|
127
|
+
|
|
128
|
+
If scouting, request at most 200 words naming the exact current mission,
|
|
129
|
+
owner, engine/model, files, checks, and risks. Reject an answer about an old
|
|
130
|
+
mission. Hand the accepted packet to the builder; reread only to resolve a
|
|
131
|
+
named gap. Use raw task metadata and events for exact paths and instructions,
|
|
132
|
+
never the simplified explanation. Verify requested models; never substitute
|
|
133
|
+
silently. Existing user authorization covers execution within that scope;
|
|
134
|
+
required plan review, CI, human-only acceptance, and deploy gates still apply.
|
|
135
|
+
|
|
136
|
+
Review related finished changes as one batch in a fresh context. Reuse a
|
|
137
|
+
review only while those bytes remain unchanged; changed bytes require
|
|
138
|
+
revalidation. Run required checks before the existing delivery path. Inspect
|
|
139
|
+
the actual final state: draft, queued, and merged are different outcomes.
|
|
140
|
+
Record elapsed time, engine calls, retries, and exposed token usage. Unknown
|
|
141
|
+
usage stays unknown; one pilot does not establish a speedup or perfect accuracy.
|
|
142
|
+
|
|
100
143
|
1. Name the absolute repo path and tell the engine to `cd` there (Atris Fast scopes to the cwd it runs from — cd first, and name absolute paths in the prompt).
|
|
101
144
|
2. Bound the slice: one task, explicit exit criteria, the verify command to run.
|
|
102
145
|
3. Git rules: `git status` first; stage only own files; never revert others' changes; never destructive git; work on a branch `member/<name>-<slug>` or a worktree. (Atris Fast does not run git — for edit tasks the orchestrator commits after verifying.)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: x-search
|
|
3
3
|
description: "X/Twitter search via xAI Grok API. Use when user wants to search tweets, monitor topics, find viral posts, or run social listening. Costs 5 credits per search. Triggers on x search, tweet search, twitter search, social listening, revenue intel, viral tweets."
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.4.0
|
|
5
5
|
tags:
|
|
6
6
|
- x-search
|
|
7
7
|
- social
|
|
@@ -23,17 +23,19 @@ login
|
|
|
23
23
|
|
|
|
24
24
|
stdout only unless --save
|
|
25
25
|
|
|
|
26
|
-
rich ephemeral --> one apply next-step, no files
|
|
27
|
-
|
|
26
|
+
rich ephemeral --> one apply next-step, one inferred check + score: 0, then one youtube-search next-step, no files
|
|
27
|
+
thin ephemeral --> check: fill this, then one youtube-search next-step, no files
|
|
28
|
+
empty successful pull --> one next: atris youtube search " "
|
|
29
|
+
--save + rich --> brief + pack + one Apply, prove baseline score 0
|
|
28
30
|
--save + thin --> refuse, no files, exit 2
|
|
29
31
|
|
|
|
30
32
|
stop
|
|
31
33
|
```
|
|
32
34
|
|
|
33
35
|
1. Login: stored login, then `atris login --agent` if needed. Never paste tokens. Never `/auth/cli`.
|
|
34
|
-
2. Search: `atris x-search "QUERY"`. Always billed (5 credits). Prints to stdout. Rich ephemeral prints one apply next-step and writes nothing.
|
|
35
|
-
3. `--save` only when you want a brief. Rich results (a number-with-units or a named mechanism) file the brief, mint `atris/experiments/x-search-<slug>/`,
|
|
36
|
-
4. Stop.
|
|
36
|
+
2. Search: `atris x-search "QUERY"`. Always billed (5 credits). Prints to stdout. Rich ephemeral prints one apply next-step, one inferred check plus `score: 0`, then one `next: atris youtube search "<query>"` (person mode uses `--name`), and writes nothing. Thin ephemeral prints `check: fill this` then that youtube-search next, and writes nothing. Empty successful pull (no tweets) prints one `next: atris youtube search " "`. Explicit refund or failed search writes nothing extra.
|
|
37
|
+
3. `--save` only when you want a brief. Rich results (a number-with-units or a named mechanism) file the brief, mint `atris/experiments/x-search-<slug>/`, write one Apply that names that pack and the keep rule, and prove that fixture starts at score 0. Thin `--save` prints `thin: no number or named mechanism. no brief.` and writes nothing. `--save` does not print a youtube-search next-step.
|
|
38
|
+
4. Stop. `--json`, explicit refund, or failed search does not print apply, check, score, or youtube-search next-step.
|
|
37
39
|
|
|
38
40
|
## Customer path (preferred)
|
|
39
41
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: youtube
|
|
3
3
|
description: "YouTube discovery and learning. Get watch permalinks with atris youtube search QUERY (free, local ytsearch/yt-dlp). On 429 the CLI already retries; use cached rows if printed, else STOP. Never run --paid after a 429. --paid only when the user explicitly asked to buy permalinks (5 credits). After a URL is picked, atris youtube notes URL (free, ephemeral unless --save). atris youtube process only to store knowledge (5 credits). Never paste tokens. Never /auth/cli. Mint with atris login --agent from a stored login. Never summarize a video from model memory. Triggers on: youtube search, find videos, paid youtube search, any youtube.com or youtu.be link, youtube, video, watch this, notes on this."
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.16.0
|
|
5
5
|
tags:
|
|
6
6
|
- youtube
|
|
7
7
|
- research
|
|
@@ -18,30 +18,57 @@ Hard path. Follow in order. Soft memory does not override this.
|
|
|
18
18
|
```
|
|
19
19
|
search QUERY (free)
|
|
20
20
|
|
|
|
21
|
+
rows --> rich: one failing check (score 0); thin: check: fill this
|
|
22
|
+
--> next: atris youtube teach <first-url>
|
|
23
|
+
--> --json stays quiet
|
|
24
|
+
|
|
|
21
25
|
429 --> CLI already retried once
|
|
22
26
|
--> cached rows printed? use them
|
|
23
27
|
--> rate-limit sentence printed? STOP
|
|
24
28
|
do not run --paid
|
|
25
29
|
|
|
|
26
30
|
pick a URL --> notes URL (free, ephemeral unless --save)
|
|
27
|
-
| rich ephemeral prints one apply next-step, no files
|
|
28
|
-
|
|
|
31
|
+
| rich ephemeral prints one apply next-step and one failing check (score 0), no files
|
|
32
|
+
| thin ephemeral prints check: fill this instead of inventing a check
|
|
33
|
+
| then next: atris youtube teach <same-url>
|
|
34
|
+
| --json stays quiet
|
|
35
|
+
| --save files brief + pack-named apply when notes have a number or named mechanism; a multi-url --save batch proves the first saved pack the same way single-url --save does; thin --save refuses
|
|
29
36
|
| or teach URL [--section N] (one chapter: claim numbers, named mechanisms, one check; free unless --save)
|
|
37
|
+
| a taught section that is not last prints next: recap TEXT or skip
|
|
38
|
+
| last section: rich ephemeral apply, failing check, and score 0, then next: atris youtube watch tick; save pack keep stays; no recap next
|
|
30
39
|
| next --section refuses until recap/skip
|
|
40
|
+
| owed prints unpaid check; successful unlock prints next section command
|
|
41
|
+
| bare teach resumes owed, or prints a start command if nothing is owed
|
|
31
42
|
|
|
|
32
43
|
write one Apply (claimable) before process
|
|
33
44
|
|
|
|
34
45
|
store knowledge? --> process URL (5 credits)
|
|
46
|
+
--> rich: one failing check (score 0); thin: check: fill this; --json stays quiet
|
|
47
|
+
|
|
48
|
+
watch add --> next: atris youtube watch tick
|
|
49
|
+
watch tick --> briefs new videos
|
|
50
|
+
--> if briefed: rich pack-named apply + failing measure.py (score 0), then next: experiments keep
|
|
51
|
+
--> thin: check: fill this, then next: atris youtube teach <first-briefed-url>
|
|
52
|
+
--> 0 briefed, no channels: next: atris youtube watch add <channel-url-or-@handle>
|
|
53
|
+
--> 0 briefed, channels exist: next: atris youtube search " "
|
|
54
|
+
|
|
55
|
+
digest --> files brief + claimable journal
|
|
56
|
+
--> rich: one pack-named apply + failing measure.py (score 0), then next: experiments keep
|
|
57
|
+
--> thin: check: fill this, then next: atris youtube watch tick
|
|
35
58
|
|
|
36
59
|
--paid QUERY only if the user asked to buy permalinks
|
|
60
|
+
|
|
|
61
|
+
rows --> rich: one failing check (score 0); thin: check: fill this
|
|
62
|
+
--> next: atris youtube teach <first-url>
|
|
63
|
+
--> --json stays quiet
|
|
37
64
|
login: atris login --agent from a stored login
|
|
38
65
|
never paste tokens, never /auth/cli
|
|
39
66
|
```
|
|
40
67
|
|
|
41
|
-
1. Get watch permalinks: `atris youtube search QUERY` (free).
|
|
68
|
+
1. Get watch permalinks: `atris youtube search QUERY` (free). A rich hit prints one inferred check plus `score: 0`. A thin hit prints `check: fill this`. Then one next teach command.
|
|
42
69
|
2. If 429: wait/retry is already in the CLI. If it prints cached rows, use those. If it prints `youtube rate-limited local search. do not use --paid as a fallback; retry later.`, STOP. Do not run `--paid`.
|
|
43
70
|
3. `--paid` only when the user explicitly asked to buy permalinks. The CLI hard-refuses `--paid` when the free cache still has a fresh same-query hit.
|
|
44
|
-
4. `atris youtube notes URL` after a URL is picked (free). Notes is ephemeral unless `--save`. Rich ephemeral prints one apply next-step and writes no files. Rich `--save` files the brief
|
|
71
|
+
4. `atris youtube notes URL` after a URL is picked (free). Notes is ephemeral unless `--save`. Rich ephemeral prints one apply next-step and one failing check (`score: 0`), then one `next: atris youtube teach <same-url>`, and writes no files. Thin ephemeral prints `check: fill this` instead of inventing a check. A playlist or multi-url batch does the same for the first successful item only. `--json` stays quiet on the check and the teach next-step. Rich `--save` files the brief, mints `atris/experiments/notes-<id>/`, writes one Apply, and prints `score: 0` only when that Apply starts failing. A rich multi-url `--save` batch proves that failing baseline for the first saved pack only; thin `--save` (no number-with-units and no named mechanism) refuses with no brief and exit 2. Do not auto `--paid`.
|
|
45
72
|
5. Write one Apply (change + receipt) before `atris youtube process`. Process still requires a filled Apply (so you `--save` a rich brief, fill Apply, then process).
|
|
46
73
|
6. Never paste tokens. Never `/auth/cli`. Mint with `atris login --agent` from a stored login.
|
|
47
74
|
|
|
@@ -75,7 +102,7 @@ atris youtube search "MCP agents" --limit 10
|
|
|
75
102
|
atris youtube search "MCP agents" --json
|
|
76
103
|
```
|
|
77
104
|
|
|
78
|
-
Uses `ytsearch` on PATH when present, else bundled `scripts/det/ytsearch`, else `yt-dlp --flat-playlist --print` with `ytsearchN:`. No credits. No `/agent/process_youtube` call.
|
|
105
|
+
Uses `ytsearch` on PATH when present, else bundled `scripts/det/ytsearch`, else `yt-dlp --flat-playlist --print` with `ytsearchN:`. No credits. No `/agent/process_youtube` call. A rich hit prints one inferred check plus `score: 0`. A thin hit prints `check: fill this`. Then one next: `atris youtube teach <first-url>`. `--json` stays quiet.
|
|
79
106
|
|
|
80
107
|
On 429 the CLI retries once, then serves `~/.atris/youtube-search-cache.json` if the same query is younger than one hour. If it prints the rate-limit sentence, stop. Do not run `--paid`.
|
|
81
108
|
|
|
@@ -88,15 +115,17 @@ atris youtube search --paid "MCP agents 2026"
|
|
|
88
115
|
atris youtube search --paid "MCP agents" --limit 10
|
|
89
116
|
```
|
|
90
117
|
|
|
91
|
-
Requires a stored login, then `atris login --agent`. The CLI mints a youtube-scope agent token from disk the same way as `atris youtube process` and `atris x-search`. Never `/auth/cli`. Never paste tokens. Prints `title | watch permalink` plus credits. Empty or failed searches refund.
|
|
118
|
+
Requires a stored login, then `atris login --agent`. The CLI mints a youtube-scope agent token from disk the same way as `atris youtube process` and `atris x-search`. Never `/auth/cli`. Never paste tokens. Prints `title | watch permalink` plus credits. A rich hit prints one inferred check plus `score: 0`. A thin hit prints `check: fill this`. Then one next: `atris youtube teach <first-url>`. `--json` stays quiet. Empty or failed searches refund.
|
|
92
119
|
|
|
93
120
|
Line contract:
|
|
94
121
|
|
|
95
122
|
```text
|
|
96
123
|
title | channel | duration | views | upload_date | https://youtu.be/ID
|
|
124
|
+
check: <inferred or fill this>
|
|
125
|
+
next: atris youtube teach "<first-url>"
|
|
97
126
|
```
|
|
98
127
|
|
|
99
|
-
`upload_date` is `YYYYMMDD` (or `NA`) so callers can apply a freshness gate (for example last 6 weeks). After the user picks a URL, run notes (free) or process (5 credits).
|
|
128
|
+
`upload_date` is `YYYYMMDD` (or `NA`) so callers can apply a freshness gate (for example last 6 weeks). `--json` stays machine-quiet. After the user picks a URL, run notes (free) or process (5 credits).
|
|
100
129
|
|
|
101
130
|
---
|
|
102
131
|
|
|
@@ -260,7 +260,7 @@ AFTER (Universal):
|
|
|
260
260
|
|
|
261
261
|
When you finish a brainstorm session:
|
|
262
262
|
1. Hand shaped ideas to the navigator (they create the tasks)
|
|
263
|
-
2. Log
|
|
263
|
+
2. Log at `atris/team/brainstormer/logs/YYYY-MM-DD.md`:
|
|
264
264
|
|
|
265
265
|
```markdown
|
|
266
266
|
## Brainstormer - Mon DD
|
|
@@ -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
|
|
274
|
+
Your log tracks how ideas evolve — the navigator reads it to understand context.
|
|
275
275
|
|
|
276
276
|
---
|
|
277
277
|
|
|
@@ -156,7 +156,7 @@ If you hit two errors on the same task, **stop**. Don't debug from polluted cont
|
|
|
156
156
|
|
|
157
157
|
## Task Management
|
|
158
158
|
|
|
159
|
-
**TODO.md is the shared task board. Your
|
|
159
|
+
**TODO.md is the shared task board. Your log is your memory.**
|
|
160
160
|
|
|
161
161
|
When you pick up a task:
|
|
162
162
|
1. Read `atris/TODO.md` — find the next unclaimed item in `## Backlog`
|
|
@@ -168,7 +168,7 @@ When you pick up a task:
|
|
|
168
168
|
```
|
|
169
169
|
3. If a task is already claimed by someone else, skip it — take the next one
|
|
170
170
|
4. When done, move it to `## Completed`
|
|
171
|
-
5. Log
|
|
171
|
+
5. Log at `atris/team/executor/logs/YYYY-MM-DD.md`:
|
|
172
172
|
|
|
173
173
|
```markdown
|
|
174
174
|
## Executor - Mon DD
|
|
@@ -179,7 +179,7 @@ When you pick up a task:
|
|
|
179
179
|
**Learned:** What you now know about the codebase
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
-
Your
|
|
182
|
+
Your log compounds context. The next executor session reads your learnings and starts smarter.
|
|
183
183
|
|
|
184
184
|
---
|
|
185
185
|
|
|
@@ -51,7 +51,7 @@ You are the launcher (the closer). Take validated work → document → capture
|
|
|
51
51
|
1. Read completed task (what was built?)
|
|
52
52
|
2. Extract learnings (patterns, decisions, gotchas)
|
|
53
53
|
3. Update MAP.md with new file:line references
|
|
54
|
-
4. Document in
|
|
54
|
+
4. Document in the log with timestamp
|
|
55
55
|
5. Suggest publishing steps
|
|
56
56
|
6. Celebrate!
|
|
57
57
|
|
|
@@ -125,12 +125,12 @@ Launch Checklist:
|
|
|
125
125
|
|
|
126
126
|
## Task Management
|
|
127
127
|
|
|
128
|
-
**TODO.md is the shared task board. Your
|
|
128
|
+
**TODO.md is the shared task board. Your log is your memory.**
|
|
129
129
|
|
|
130
130
|
When you close out work:
|
|
131
131
|
1. Verify completed tasks in `atris/TODO.md` are properly marked in `## Completed`
|
|
132
132
|
2. Clean up any stale items the validator missed
|
|
133
|
-
3. Log
|
|
133
|
+
3. Log at `atris/team/launcher/logs/YYYY-MM-DD.md`:
|
|
134
134
|
|
|
135
135
|
```markdown
|
|
136
136
|
## Launcher - Mon DD
|
|
@@ -141,7 +141,7 @@ When you close out work:
|
|
|
141
141
|
**Learned:** Patterns to reuse, gotchas to remember
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
Your
|
|
144
|
+
Your log is the team's institutional memory. What you record here prevents repeating mistakes.
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
|
|
@@ -190,12 +190,12 @@ Navigator creates validate.md with Status (v0 — planned) and Checks. The execu
|
|
|
190
190
|
|
|
191
191
|
## Task Management
|
|
192
192
|
|
|
193
|
-
**TODO.md is the shared task board. Your
|
|
193
|
+
**TODO.md is the shared task board. Your log is your memory.**
|
|
194
194
|
|
|
195
195
|
When you create tasks:
|
|
196
196
|
1. Write them to `atris/TODO.md` under `## Backlog` using format: `- **T#:** Description [explore|execute]`
|
|
197
197
|
2. Each task: one job, clear exit condition, tagged `[explore]` or `[execute]`
|
|
198
|
-
3. Log
|
|
198
|
+
3. Log at `atris/team/navigator/logs/YYYY-MM-DD.md`:
|
|
199
199
|
|
|
200
200
|
```markdown
|
|
201
201
|
## Navigator - Mon DD
|
|
@@ -206,7 +206,7 @@ When you create tasks:
|
|
|
206
206
|
**Pattern:** What you learned about the user's preferences
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
-
Your
|
|
209
|
+
Your log is how you get smarter. Record what the user liked, what they pushed back on, what communication style works.
|
|
210
210
|
|
|
211
211
|
---
|
|
212
212
|
|