atris 3.16.1 → 3.22.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 +32 -7
- package/atris/skills/atris/SKILL.md +15 -2
- package/atris/skills/atris-feedback/SKILL.md +7 -0
- package/atris/skills/design/SKILL.md +29 -2
- package/atris/skills/engines/SKILL.md +44 -0
- package/atris/skills/flow/SKILL.md +1 -1
- package/atris/skills/wake/SKILL.md +37 -0
- package/atris/skills/youtube/SKILL.md +13 -39
- package/atris/team/validator/MEMBER.md +1 -0
- package/atris/wiki/concepts/agent-activation-contract.md +3 -3
- package/atris/wiki/concepts/workspace-initialization-contract.md +3 -3
- package/atris/wiki/index.md +1 -0
- package/atris.md +43 -19
- package/bin/atris.js +413 -31
- package/commands/agent-spawn.js +480 -0
- package/commands/analytics.js +6 -3
- package/commands/apps.js +11 -0
- package/commands/autopilot.js +42 -18
- package/commands/brain.js +74 -7
- package/commands/brainstorm.js +9 -58
- package/commands/clean.js +1 -4
- package/commands/compile.js +9 -4
- package/commands/console.js +8 -3
- package/commands/deck.js +184 -0
- package/commands/init.js +22 -11
- package/commands/lesson.js +76 -0
- package/commands/member.js +252 -48
- package/commands/mission.js +405 -13
- package/commands/now.js +4 -2
- package/commands/probe.js +105 -27
- package/commands/pulse.js +504 -0
- package/commands/radar.js +1 -0
- package/commands/recap.js +71 -25
- package/commands/run.js +615 -22
- package/commands/site.js +48 -0
- package/commands/slop.js +307 -0
- package/commands/spaceship.js +39 -0
- package/commands/sync.js +0 -2
- package/commands/task.js +429 -37
- package/commands/theme.js +217 -0
- package/commands/verify.js +7 -3
- package/lib/activity-stream.js +166 -0
- package/lib/auto-accept-certified.js +23 -1
- package/lib/context-gatherer.js +170 -0
- package/lib/deck-from-md.js +110 -0
- package/lib/escape-regexp.js +13 -0
- package/lib/file-ops.js +6 -3
- package/lib/html-render.js +257 -0
- package/lib/journal.js +1 -1
- package/lib/lesson-contradiction.js +113 -0
- package/lib/memory-view.js +95 -0
- package/lib/policy-lessons.js +3 -2
- package/lib/pulse.js +401 -0
- package/lib/runner-command.js +156 -0
- package/lib/site.js +114 -0
- package/lib/slides-deck.js +237 -0
- package/lib/state-detection.js +1 -4
- package/lib/task-db.js +101 -4
- package/lib/task-proof.js +1 -1
- package/lib/theme.js +264 -0
- package/lib/todo-fallback.js +2 -1
- package/lib/todo-sections.js +33 -0
- package/package.json +1 -2
- package/utils/api.js +14 -2
- package/atris/atrisDev.md +0 -717
package/README.md
CHANGED
|
@@ -185,10 +185,21 @@ atris business record atris/reports/2026-04-12-operator-recap.md --outcome mixed
|
|
|
185
185
|
| `atris do` | Execute work |
|
|
186
186
|
| `atris review` | Validate work and capture learnings |
|
|
187
187
|
| `atris run` | Auto-chain `plan -> do -> review` |
|
|
188
|
+
| `atris run logs` | Browse glass run logs (phase reasoning persisted to disk) |
|
|
189
|
+
| `atris run prune-logs` | Prune old run logs, keeping only the most recent N |
|
|
190
|
+
| `atris run search` | Search phase reasoning across all run logs by keyword |
|
|
191
|
+
| `atris run stats` | Show run log stats: phase counts, avg durations |
|
|
192
|
+
| `atris run export` | Export all run logs as a JSON bundle |
|
|
193
|
+
| `atris run diff` | Compare two run logs side by side |
|
|
188
194
|
| `atris autopilot` | Guided loop with approvals |
|
|
195
|
+
| `atris pulse` | Install or run the durable overnight heartbeat |
|
|
189
196
|
| `atris log` | Add inbox items to today's journal |
|
|
197
|
+
| `atris now` | Show the current operating truth |
|
|
198
|
+
| `atris radar` | Show live agents joined with tasks, missions, and worktrees |
|
|
199
|
+
| `atris ctop` | Show process-first live agent CPU and memory |
|
|
190
200
|
| `atris status` | Show active work and completions |
|
|
191
201
|
| `atris task` | Durable local task state and the agent work loop |
|
|
202
|
+
| `atris mission` | Durable goal, owner, verifier, tick receipts, and loop state |
|
|
192
203
|
| `atris play` | Enter the AgentXP player loop for one proof-backed mission |
|
|
193
204
|
| `atris gm` | Enter AgentXP General Manager mode for player missions and review queues |
|
|
194
205
|
| `atris xp` | Show the local AgentXP card and sync eligible proof to the hosted leaderboard |
|
|
@@ -200,6 +211,7 @@ atris business record atris/reports/2026-04-12-operator-recap.md --outcome mixed
|
|
|
200
211
|
| `atris receipt` | Save evidence from an agent run |
|
|
201
212
|
| `atris experiments` | Run small experiments and compare results |
|
|
202
213
|
| `atris computer card` | Show or write the local owner/computer card |
|
|
214
|
+
| `atris release` | Draft or publish a version bump, tag, GitHub release, and launch post |
|
|
203
215
|
|
|
204
216
|
## Built-In Systems
|
|
205
217
|
|
|
@@ -211,7 +223,9 @@ atris business record atris/reports/2026-04-12-operator-recap.md --outcome mixed
|
|
|
211
223
|
- `atris activate` loads the current wiki status so the next session starts with project memory, not just tasks
|
|
212
224
|
- `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.
|
|
213
225
|
- `atris codex-goal` is the guarded bridge for native Codex `/goal`: `status` reads `~/.codex/state_5.sqlite`, while `reset --thread <id> --confirm-complete-goal-reset` backs up the DB, dumps the exact completed `thread_goals` row, deletes only that completed row, and writes a receipt. The next native goal must still be created by the live Codex thread; Atris Mission/member goals remain the durable loop state.
|
|
214
|
-
- `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 "..."`. 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.
|
|
226
|
+
- `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.
|
|
227
|
+
- `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`.
|
|
228
|
+
- `atris pulse` is the OS-cron heartbeat for overnight self-improvement. Use `atris pulse status`, `tick`, `run`, `install --cadence "<cron>" --days 7 --verify "npm test" --model opus`, and `uninstall`.
|
|
215
229
|
- `atris experiments` runs small test packs in `atris/experiments/`
|
|
216
230
|
- `atris pull` and `atris push` sync cloud workspaces and journals
|
|
217
231
|
- `atris live` keeps a business brain fresh by checking/fixing the workspace, pushing local state, pulling cloud state, and pushing again after local changes go quiet
|
|
@@ -279,13 +293,24 @@ atris skill link [--all]
|
|
|
279
293
|
|
|
280
294
|
For Codex, copy any skill folder into `~/.codex/skills/`.
|
|
281
295
|
|
|
282
|
-
##
|
|
296
|
+
## Before a New Version
|
|
283
297
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
298
|
+
Run the release-facing checks before bumping:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
node bin/atris.js --help
|
|
302
|
+
node bin/atris.js pulse --help
|
|
303
|
+
node bin/atris.js release --help
|
|
304
|
+
node --test
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Then dry-run the release:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
atris release --dry-run
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
`atris release` drafts or publishes from local git history. `--dry-run` prints the planned bump without committing, tagging, or pushing.
|
|
289
314
|
|
|
290
315
|
## Update
|
|
291
316
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: atris
|
|
3
|
-
description: Atris workspace navigation for atris repos, TODO files, tasks, MAP.md, backlog, and where-is-X questions.
|
|
3
|
+
description: "Atris workspace navigation for atris repos, TODO files, tasks, MAP.md, backlog, and where-is-X questions. Use when navigating an Atris workspace, finding files via MAP.md, or checking task state."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- atris
|
|
7
|
+
- navigation
|
|
8
|
+
- workspace
|
|
4
9
|
allowed-tools: Read, Bash, Glob, Grep, Write, Edit
|
|
5
10
|
---
|
|
6
11
|
|
|
@@ -26,4 +31,12 @@ Key behaviors:
|
|
|
26
31
|
- Read PERSONA.md (3-4 sentences, ASCII visuals)
|
|
27
32
|
- Check MAP.md for file:line refs
|
|
28
33
|
- Use `atris task` for claims, proof, ready, and accept
|
|
29
|
-
- Treat TODO.md as a rendered view; regenerate it instead of hand-editing tasks
|
|
34
|
+
- Treat TODO.md as a rendered view; regenerate it instead of hand-editing tasks
|
|
35
|
+
|
|
36
|
+
## Steps
|
|
37
|
+
|
|
38
|
+
1. Run `atris atris.md` on first interaction to show workspace status
|
|
39
|
+
2. Read `atris/MAP.md` before any file search to find file:line refs
|
|
40
|
+
3. Run `atris task list` or `atris task next` to find current work
|
|
41
|
+
4. Claim tasks with `atris task claim <id> --as <agent>`
|
|
42
|
+
5. Move completed work to review with `atris task ready <id> --proof "..."`
|
|
@@ -12,6 +12,13 @@ tags:
|
|
|
12
12
|
|
|
13
13
|
One skill for everything: submit feedback, view the queue, resolve/close/delete items.
|
|
14
14
|
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
1. Parse the user input to determine the feedback action (list, submit, resolve, close, delete)
|
|
18
|
+
2. Run the matching `atris feedback` CLI command from the reference below
|
|
19
|
+
3. If `atris` CLI is unavailable, fall back to the direct API/DynamoDB path
|
|
20
|
+
4. Report the result to the user
|
|
21
|
+
|
|
15
22
|
## Parse the input
|
|
16
23
|
|
|
17
24
|
- `/feedback` (no args) → show the queue
|
|
@@ -56,13 +56,37 @@ Font alternatives: instead of Inter → Instrument Sans, Plus Jakarta Sans, Outf
|
|
|
56
56
|
|
|
57
57
|
**Labels:** never use all-caps UI labels, tracked-uppercase labels, faux small-caps, or eyebrow-style microcopy for ordinary product surfaces. Keshav strongly dislikes this style. Prefer natural title case or sentence case for labels like "Threads", "Active tasks", and "Team"; do not write them as `THREADS`, `ACTIVE TASKS`, or letter-spaced metadata.
|
|
58
58
|
|
|
59
|
-
**Visual anti-patterns:** no glassmorphism, no gradient text, no sparklines as decoration, no rounded-rect-with-colored-border, no large icons with rounded corners above headings, no hero metric layout (big number + small label), no modals unless truly necessary.
|
|
59
|
+
**Visual anti-patterns:** no glassmorphism, no gradient text, no sparklines as decoration, no rounded-rect-with-colored-border, no large icons with rounded corners above headings, no hero metric layout (big number + small label), no modals unless truly necessary. no "claude beige" off-white backgrounds, no instrument serif overuse (the new AI tell), no generic flat tinted backgrounds.
|
|
60
|
+
|
|
61
|
+
## Vocabulary is the Lever
|
|
62
|
+
|
|
63
|
+
Designers beat engineers at AI prompting because they own craft language. Name the move precisely: "tighten vertical rhythm," "increase negative space," "make hierarchy bolder here, quieter there." Vague prompts = vague output. Core terms: vertical rhythm, negative space, bolder/quieter, affordances, meta-design, conviction.
|
|
64
|
+
|
|
65
|
+
## Raising Floor vs Ceiling
|
|
66
|
+
|
|
67
|
+
Use AI to raise the floor (automate the mechanical 80% — scaffolding, grids, state matrices). Spend human attention on the ceiling (last 10-20% — taste, instinct, the unexpected choice). Cognitive delegation, not surrender. AI routes you there; you make the final call.
|
|
68
|
+
|
|
69
|
+
## AX — Agentic Experience
|
|
70
|
+
|
|
71
|
+
Design for AI agents as users, not just humans. Agents can't see your buttons. They need: speed, clarity, structured output, verbose errors with next steps, edge case coverage, agentic affordances (`llms.txt`, clear `--help`, stable exit codes).
|
|
72
|
+
|
|
73
|
+
## Conviction Over Local Maxima
|
|
74
|
+
|
|
75
|
+
Iterating toward "slightly better" = local maximum (safe, forgettable). Great design is a bet on a global maximum. AI makes the local-max trap worse — you converge on average faster. Subtraction over addition: the strongest move is often deleting something.
|
|
76
|
+
|
|
77
|
+
## Anti-Attractors
|
|
78
|
+
|
|
79
|
+
Models have gravity wells (purple gradients, instrument serif, claude beige). Escape them deliberately: name what you don't want, seed with a specific reference, inject a constraint (monochrome, one font weight), rotate your defaults between projects.
|
|
80
|
+
|
|
81
|
+
## The Scarcity Principle
|
|
82
|
+
|
|
83
|
+
Taste emerges from constraints. Pick constraints before starting: one font, two colors, three spacing values. Infinite options produce the distribution center.
|
|
60
84
|
|
|
61
85
|
## The AI Slop Test
|
|
62
86
|
|
|
63
87
|
> "if you showed this to someone and said 'AI made this,' would they believe you immediately? if yes, that's the problem."
|
|
64
88
|
|
|
65
|
-
Fingerprints: inter/roboto, purple-to-blue gradients, cyan-on-dark, glassmorphism, gradient text, hero metrics, identical card grids, bounce easing, dark mode with neon, sparklines as decoration, rounded rectangles with drop shadows.
|
|
89
|
+
Fingerprints: inter/roboto, purple-to-blue gradients, cyan-on-dark, glassmorphism, gradient text, hero metrics, identical card grids, bounce easing, dark mode with neon, sparklines as decoration, rounded rectangles with drop shadows, "claude beige" off-white backgrounds, instrument serif overuse, generic flat tinted backgrounds.
|
|
66
90
|
|
|
67
91
|
## Before Shipping Checklist
|
|
68
92
|
|
|
@@ -79,6 +103,9 @@ Run through `atris/policies/atris-design.md` "before shipping" section:
|
|
|
79
103
|
- WCAG AA contrast (4.5:1 text, 3:1 UI)?
|
|
80
104
|
- works on mobile (44px touch targets, no horizontal scroll, readable text)?
|
|
81
105
|
- respects `prefers-reduced-motion`?
|
|
106
|
+
- did you name the moves in craft vocabulary (vertical rhythm, negative space, bolder/quieter)?
|
|
107
|
+
- did you use anti-attractors (named what to avoid, seeded a reference, set a constraint)?
|
|
108
|
+
- if agent-facing: does it have agentic affordances (clear errors, structured output, stable exit codes)?
|
|
82
109
|
- would a designer clock this as ai-generated?
|
|
83
110
|
|
|
84
111
|
## Atris Commands
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: engines
|
|
3
|
+
description: "Dispatch coding work to an installed terminal agent — Codex, Cursor, or Devin — as an interchangeable worker engine. Claude orchestrates: writes the bounded prompt, the engine builds, Claude verifies and lands. Triggers on: use codex, use cursor, use devin, engine, dispatch to, worker agent, second opinion build."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- engines
|
|
7
|
+
- codex
|
|
8
|
+
- cursor
|
|
9
|
+
- devin
|
|
10
|
+
- orchestration
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Engines — interchangeable terminal workers
|
|
14
|
+
|
|
15
|
+
One contract, three engines. The orchestrator (you, Claude) writes a bounded task prompt, dispatches it to an engine, then **independently verifies, lands, and pushes** the result. Engines never self-certify.
|
|
16
|
+
|
|
17
|
+
## Invocation
|
|
18
|
+
|
|
19
|
+
| Engine | Command | Notes |
|
|
20
|
+
|--------|---------|-------|
|
|
21
|
+
| Codex | `node "${CLAUDE_PLUGIN_ROOT}/scripts/codex-companion.mjs" task --background [--write] "<prompt>"` (via codex plugin / codex:codex-rescue agent) | Poll with `status`, fetch with `result <job-id>` |
|
|
22
|
+
| Cursor | `cursor-agent --trust -p "<prompt>"` (run from the target repo) | Headless print mode; `--trust` required for non-interactive |
|
|
23
|
+
| 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 |
|
|
24
|
+
|
|
25
|
+
## Picking an engine
|
|
26
|
+
|
|
27
|
+
- **Codex** — deep root-cause work, long autonomous builds, second-opinion diagnosis. Slowest; runs sandboxed.
|
|
28
|
+
- **Cursor** — fast bounded edits and refactors in a single repo.
|
|
29
|
+
- **Devin** — multi-step feature work; use `cloud` when the run should survive laptop sleep.
|
|
30
|
+
- Parallel builds across repos: one engine job per repo, never two engines writing the same checkout.
|
|
31
|
+
|
|
32
|
+
## Prompt contract (every dispatch)
|
|
33
|
+
|
|
34
|
+
1. Name the absolute repo path and tell the engine to `cd` there.
|
|
35
|
+
2. Bound the slice: one task, explicit exit criteria, the verify command to run.
|
|
36
|
+
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.
|
|
37
|
+
4. Require a final report: files changed, verify command + result, branch name.
|
|
38
|
+
|
|
39
|
+
## Landing (orchestrator duties — never skip)
|
|
40
|
+
|
|
41
|
+
- **Codex sandbox cannot reach github.com and may get read-only repo access.** Expect temp clones / `git format-patch` fallbacks under `/private/tmp`. Apply patches in a fresh worktree, re-run the verify command yourself, then push.
|
|
42
|
+
- Cursor and Devin run unsandboxed — still re-run the verify command yourself before pushing.
|
|
43
|
+
- Engine task DBs and receipts written inside a sandbox are snapshots; reconcile against the live `atris task` plane after landing.
|
|
44
|
+
- A stalled job (no log output for 30+ min) gets cancelled and taken over; don't wait on it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow
|
|
3
|
-
description: "All-day operating partner. Reads your MEMBER.md, goals, logs, and company state. Tracks work in real time. Updates your identity and goals as you evolve."
|
|
3
|
+
description: "All-day operating partner. Reads your MEMBER.md, goals, logs, and company state. Tracks work in real time. Updates your identity and goals as you evolve. Use when starting a work session, checking member status, or reviewing goals."
|
|
4
4
|
version: 1.0.0
|
|
5
5
|
tags:
|
|
6
6
|
- member
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wake
|
|
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
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- wake
|
|
7
|
+
- team
|
|
8
|
+
- members
|
|
9
|
+
- closed-loop
|
|
10
|
+
- autonomous-org
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Wake — one tick of a team member
|
|
14
|
+
|
|
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
|
+
|
|
17
|
+
## Resolving the member
|
|
18
|
+
|
|
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
|
+
|
|
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
|
+
|
|
23
|
+
## The tick
|
|
24
|
+
|
|
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
|
+
|
|
33
|
+
## Hard rules
|
|
34
|
+
|
|
35
|
+
- Only members claim; visiting agents may add/say/delegate, never claim.
|
|
36
|
+
- Human acceptance (`atris task accept*`) is human-only — the CLI enforces it; never spoof agent detection to get past it.
|
|
37
|
+
- One tick per wake. The loop's value is the receipt trail, not the volume.
|
|
@@ -43,15 +43,6 @@ else
|
|
|
43
43
|
exit 1
|
|
44
44
|
fi
|
|
45
45
|
|
|
46
|
-
# 4. Auth check
|
|
47
|
-
STATUS=$(curl -s "https://api.atris.ai/api/me" \
|
|
48
|
-
-H "Authorization: Bearer $TOKEN")
|
|
49
|
-
|
|
50
|
-
if echo "$STATUS" | grep -q "Token expired\|Not authenticated\|Unauthorized"; then
|
|
51
|
-
echo "Token expired. Run: atris login --force"
|
|
52
|
-
exit 1
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
46
|
echo "Ready. YouTube skill active (5 credits per video)."
|
|
56
47
|
export ATRIS_TOKEN="$TOKEN"
|
|
57
48
|
```
|
|
@@ -70,13 +61,8 @@ TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
|
|
|
70
61
|
|
|
71
62
|
### Process a Video
|
|
72
63
|
```bash
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-H "Content-Type: application/json" \
|
|
76
|
-
-d '{
|
|
77
|
-
"youtube_url": "https://www.youtube.com/watch?v=VIDEO_ID",
|
|
78
|
-
"query": "What are the key takeaways?"
|
|
79
|
-
}'
|
|
64
|
+
atris youtube process "https://www.youtube.com/watch?v=VIDEO_ID" \
|
|
65
|
+
--query "What are the key takeaways?"
|
|
80
66
|
```
|
|
81
67
|
|
|
82
68
|
**Parameters:**
|
|
@@ -107,15 +93,10 @@ curl -s -X POST "https://api.atris.ai/api/agent/process_youtube" \
|
|
|
107
93
|
|
|
108
94
|
### Process + Store as Knowledge
|
|
109
95
|
```bash
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
"youtube_url": "https://www.youtube.com/watch?v=...",
|
|
115
|
-
"query": "Extract the main arguments and evidence",
|
|
116
|
-
"agent_id": "YOUR_AGENT_ID",
|
|
117
|
-
"store_as_knowledge": true
|
|
118
|
-
}'
|
|
96
|
+
atris youtube process "https://www.youtube.com/watch?v=..." \
|
|
97
|
+
--query "Extract the main arguments and evidence" \
|
|
98
|
+
--agent "YOUR_AGENT_ID" \
|
|
99
|
+
--store
|
|
119
100
|
```
|
|
120
101
|
|
|
121
102
|
---
|
|
@@ -124,12 +105,12 @@ curl -s -X POST "https://api.atris.ai/api/agent/process_youtube" \
|
|
|
124
105
|
|
|
125
106
|
### "Learn from this YouTube video"
|
|
126
107
|
1. Run bootstrap
|
|
127
|
-
2. Process: `
|
|
108
|
+
2. Process: `atris youtube process <url> --query "What are the key lessons and insights?"`
|
|
128
109
|
3. Display the analysis to the user
|
|
129
110
|
|
|
130
111
|
### "What does this video say about X?"
|
|
131
112
|
1. Run bootstrap
|
|
132
|
-
2. Process with focused query: `
|
|
113
|
+
2. Process with focused query: `atris youtube process <url> --query "What does this say about X?"`
|
|
133
114
|
3. Show the focused analysis
|
|
134
115
|
|
|
135
116
|
### "Process multiple videos on a topic"
|
|
@@ -143,10 +124,7 @@ VIDEOS=(
|
|
|
143
124
|
|
|
144
125
|
for url in "${VIDEOS[@]}"; do
|
|
145
126
|
echo "Processing: $url"
|
|
146
|
-
|
|
147
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
148
|
-
-H "Content-Type: application/json" \
|
|
149
|
-
-d "{\"youtube_url\": \"$url\", \"query\": \"Key insights and takeaways\"}"
|
|
127
|
+
atris youtube process "$url" --query "Key insights and takeaways"
|
|
150
128
|
echo ""
|
|
151
129
|
done
|
|
152
130
|
```
|
|
@@ -154,8 +132,8 @@ done
|
|
|
154
132
|
|
|
155
133
|
### "Save video insights to my agent's memory"
|
|
156
134
|
1. Run bootstrap
|
|
157
|
-
2. Get your agent ID: `
|
|
158
|
-
3. Process with storage: `
|
|
135
|
+
2. Get your agent ID: `atris agent`
|
|
136
|
+
3. Process with storage: `atris youtube process <url> --agent "..." --store`
|
|
159
137
|
4. Agent can now reference these insights in future conversations
|
|
160
138
|
|
|
161
139
|
---
|
|
@@ -196,12 +174,8 @@ npm install -g atris && atris login
|
|
|
196
174
|
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
|
|
197
175
|
|
|
198
176
|
# Process a video
|
|
199
|
-
|
|
200
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
201
|
-
-d '{"youtube_url": "https://youtube.com/watch?v=...", "query": "Summarize this"}'
|
|
177
|
+
atris youtube process "https://youtube.com/watch?v=..." --query "Summarize this"
|
|
202
178
|
|
|
203
179
|
# Process + store to agent knowledge
|
|
204
|
-
|
|
205
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
206
|
-
-d '{"youtube_url": "https://youtube.com/watch?v=...", "agent_id": "YOUR_ID", "store_as_knowledge": true}'
|
|
180
|
+
atris youtube process "https://youtube.com/watch?v=..." --agent "YOUR_ID" --store
|
|
207
181
|
```
|
|
@@ -201,6 +201,7 @@ Status is the scoreboard. One line per version. Anyone can look at validate.md a
|
|
|
201
201
|
|
|
202
202
|
## Rules
|
|
203
203
|
|
|
204
|
+
0. **Judge never patches** — You detect, verify, certify, revise, and open tasks. You do not edit source files. If a tick finds a fix worth making, open a task for an executor (or quarantine the diff to its own task reviewed by a non-validator actor) — certifying your own patch is the one failure this system cannot absorb.
|
|
204
205
|
1. **Always run tests** — Never approve without green tests
|
|
205
206
|
2. **Update MAP.md** — If files moved or architecture changed
|
|
206
207
|
3. **Update atris/features/README.md** — Add new feature entry with summary, files, keywords
|
|
@@ -5,15 +5,15 @@ title: Agent Activation Contract
|
|
|
5
5
|
sources:
|
|
6
6
|
- atris/CLAUDE.md
|
|
7
7
|
- commands/activate.js
|
|
8
|
-
last_compiled: 2026-06-
|
|
9
|
-
last_verified: 2026-06-
|
|
8
|
+
last_compiled: 2026-06-23
|
|
9
|
+
last_verified: 2026-06-23
|
|
10
10
|
confidence: 0.9
|
|
11
11
|
dependencies:
|
|
12
12
|
- atris/wiki/concepts/plan-do-review-loop.md
|
|
13
13
|
- atris/wiki/concepts/wiki-as-memory-substrate.md
|
|
14
14
|
actionability: "Use this before changing agent boot instructions, `atris activate`, MAP-first behavior, first-message requirements, or durable-memory routing."
|
|
15
15
|
created: 2026-05-10
|
|
16
|
-
updated: 2026-06-
|
|
16
|
+
updated: 2026-06-23
|
|
17
17
|
tags:
|
|
18
18
|
- agent-activation
|
|
19
19
|
- protocol
|
|
@@ -4,8 +4,8 @@ slug: workspace-initialization-contract
|
|
|
4
4
|
title: Workspace Initialization Contract
|
|
5
5
|
sources:
|
|
6
6
|
- commands/init.js
|
|
7
|
-
last_compiled: 2026-06-
|
|
8
|
-
last_verified: 2026-06-
|
|
7
|
+
last_compiled: 2026-06-23
|
|
8
|
+
last_verified: 2026-06-23
|
|
9
9
|
confidence: 0.86
|
|
10
10
|
dependencies:
|
|
11
11
|
- atris/wiki/systems/atris-cli.md
|
|
@@ -13,7 +13,7 @@ dependencies:
|
|
|
13
13
|
- atris/wiki/concepts/wiki-as-memory-substrate.md
|
|
14
14
|
actionability: "Use this before changing `atris init`, workspace scaffolds, generated agent instructions, project detection, or boot hook behavior."
|
|
15
15
|
created: 2026-05-10
|
|
16
|
-
updated: 2026-06-
|
|
16
|
+
updated: 2026-06-23
|
|
17
17
|
tags:
|
|
18
18
|
- initialization
|
|
19
19
|
- workspace
|
package/atris/wiki/index.md
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
- [[atris/wiki/concepts/owner-computer-model.md]] — Owner = User | Business; constrained entity modes, typed computers, and groups as the social/access layer
|
|
21
21
|
- [[atris/wiki/concepts/agent-activation-contract.md]] — editor-facing boot contract: first message, MAP-first, setup, and durable-memory routing
|
|
22
22
|
- [[atris/wiki/concepts/workspace-initialization-contract.md]] — `atris init` bootstrap contract: guards, scaffolds, team context, generated agent files, and hooks
|
|
23
|
+
- [[atris/wiki/concepts/glass-interface-principle.md]] — AI tool design doctrine: make reasoning visible and inspectable, not black-boxed
|
|
23
24
|
|
|
24
25
|
## Briefs
|
|
25
26
|
|
package/atris.md
CHANGED
|
@@ -10,9 +10,9 @@ leave a trail another agent or human can trust.
|
|
|
10
10
|
On session start, before responding:
|
|
11
11
|
|
|
12
12
|
1. Read:
|
|
13
|
-
- `atris/logs/YYYY/YYYY-MM-DD.md
|
|
14
|
-
- `atris/MAP.md
|
|
15
|
-
- `atris/wiki/STATUS.md` if present
|
|
13
|
+
- `atris/logs/YYYY/YYYY-MM-DD.md`: today's journal
|
|
14
|
+
- `atris/MAP.md`: navigation
|
|
15
|
+
- `atris/wiki/STATUS.md` if present: current memory snapshot
|
|
16
16
|
|
|
17
17
|
2. Show this box, then ask what to work on if no task was already given.
|
|
18
18
|
|
|
@@ -50,13 +50,36 @@ Then:
|
|
|
50
50
|
- do not call something complete without verification
|
|
51
51
|
- do not take irreversible actions without approval from the human
|
|
52
52
|
- do not hide state outside markdown, logs, diffs, or the journal
|
|
53
|
-
- do not edit the rules that judge you
|
|
53
|
+
- do not edit the rules that judge you: the reward config, the authority policy, or this file
|
|
54
54
|
|
|
55
55
|
If you cannot honor these rules, stop, write why in the journal, and ask the human before continuing.
|
|
56
56
|
|
|
57
57
|
Labels used below:
|
|
58
|
-
- `guarded
|
|
59
|
-
- `expected
|
|
58
|
+
- `guarded`: checked by code or a pre-commit hook; bypassing is a bug
|
|
59
|
+
- `expected`: convention; honor it or stop
|
|
60
|
+
|
|
61
|
+
## taste
|
|
62
|
+
|
|
63
|
+
What you ship should not read as generated. The test: if someone said "an AI made this," would they believe it instantly? If yes, that is the bug. The model has no words for restraint and it falls into gravity wells. Beat both.
|
|
64
|
+
|
|
65
|
+
- **Gate it.** `atris slop detect <path>` is deterministic: no model, exit 1 on a tell, built for CI and the review stage. A finding is a fact (file:line + rule), not an opinion. `--diff`/`--staged` scopes it to changed lines for a commit gate; `--fix` repairs the safe tells. `guarded` once wired into review.
|
|
66
|
+
- **Name the move.** Vague prompts make vague output. Direct with craft words: vertical rhythm, negative space, hierarchy, contrast, bolder here / quieter there, restraint. Precise language is the lever. Own it.
|
|
67
|
+
- **Refuse the wells** (named so you can): purple/indigo gradients, gradient-filled text, glassmorphism, Inter/Roboto defaults, claude-beige, neon-on-dark, hero-metric rows, identical card grids, eyebrow/tracked-caps labels, pulsing live-dots, em dashes.
|
|
68
|
+
- **Commit to constraints.** One distinctive font, one accent hue, a small spacing scale. Taste is subtraction, not addition.
|
|
69
|
+
- **Generate it right.** `atris deck` (slides), `atris deck from <doc.md> --html` (a web page from a plain doc, in the web app's design tokens), `atris site <dir>` (a whole markdown folder into a navigable site), and `atris recap --html` (a memory-updates page) all apply the system by default: own backgrounds and fonts, never the tool's stock template. Output as an AppBlock with `--block` to drop into a web app.
|
|
70
|
+
- **Compound it.** A new tell becomes a project rule in `.atris/slop.rules.json` (`atris slop rules --add`), and a project's brand lives in `.atris/theme.json` (`atris theme create` builds your own by feel, or `atris theme init` scaffolds one) so every deck, page, and site is on-brand by default. The gate and the look grow per project instead of leaning on memory. Taste lives in code, not vibes.
|
|
71
|
+
|
|
72
|
+
## voice
|
|
73
|
+
|
|
74
|
+
The same discipline for words. Output stays sharp no matter how bloated the context. A full context is not license to ramble.
|
|
75
|
+
|
|
76
|
+
- **Lead with the move.** Answer first, support after. No preamble, no agreement reflex ("great question", "you're absolutely right").
|
|
77
|
+
- **Specific over buzzy.** Name the exact thing. If you can't, you don't understand it yet; go look, don't hedge.
|
|
78
|
+
- **Cut filler.** Drop "it's worth noting", "in order to", "leverage", "seamless", "robust", "delve", stacked hedges, and em dashes. `atris slop` flags the prose tells (em-dash, hype-copy) too.
|
|
79
|
+
- **Bound verbosity by information, not context.** Say the load-bearing thing and stop. Length tracks what the reader needs to act, nothing more.
|
|
80
|
+
- **Match the register.** The operator wants the next move; a spec wants the contract; a journal wants one line. Jargon is a lever only when shared: use the reader's precise terms, define a new one once.
|
|
81
|
+
|
|
82
|
+
`expected`: this is how an Atris agent writes and builds. Shipping slop or rambling is a failure smell, same as drift or a stale task.
|
|
60
83
|
|
|
61
84
|
## task source of truth
|
|
62
85
|
|
|
@@ -121,10 +144,10 @@ The human is the constructor. You multiply. Handoff fidelity lives in the files,
|
|
|
121
144
|
|
|
122
145
|
Move one task at a time through plan → do → review.
|
|
123
146
|
|
|
124
|
-
- **plan
|
|
125
|
-
- **plan-review
|
|
126
|
-
- **do
|
|
127
|
-
- **review
|
|
147
|
+
- **plan**: read relevant files, produce an ASCII visualization, wait for approval. No code.
|
|
148
|
+
- **plan-review**: the validator reads the plan fresh and signs off with `SIGNOFF:` or halts with `REJECT:` + `FIX:` + an optional `PROPOSED:` block (concrete draft of Files / Exit / Verify / Rollback to replace). Plan does not move to do without signoff. The validator is a drafting partner, not just a critic: on REJECT it proposes the sharper rubric rather than leaving the human to guess. Codex is optional escalation when `ATRIS_USE_CODEX=1` or the task carries `[codex]`.
|
|
149
|
+
- **do**: claim the task with `atris task claim <id> --as <agent>`, execute step by step, add notes as reality changes, update `MAP.md` and the journal when needed.
|
|
150
|
+
- **review**: run the task's verification, read the diff, run the relevant tests, finish with `atris task finish <id> --proof "..."`, and add the lesson/next task with `atris task review`.
|
|
128
151
|
|
|
129
152
|
Every stage runs the Confidence Gate before it advances:
|
|
130
153
|
|
|
@@ -177,7 +200,7 @@ Periodically, and before closing an endgame, clean:
|
|
|
177
200
|
- **I1:** Description
|
|
178
201
|
|
|
179
202
|
## Notes
|
|
180
|
-
[timestamped lines
|
|
203
|
+
[timestamped lines: one per discovery, decision, or tick]
|
|
181
204
|
```
|
|
182
205
|
|
|
183
206
|
Context is a cache. Disk is truth. Route discoveries as they happen:
|
|
@@ -195,12 +218,13 @@ Do not batch. Nothing important should live only in memory.
|
|
|
195
218
|
|
|
196
219
|
## failure smells
|
|
197
220
|
|
|
198
|
-
If you notice these, stop and flag
|
|
199
|
-
- **loop
|
|
200
|
-
- **drift
|
|
201
|
-
- **stale task
|
|
202
|
-
- **hidden side effect
|
|
203
|
-
- **unverifiable completion
|
|
221
|
+
If you notice these, stop and flag, do not continue:
|
|
222
|
+
- **loop**: the same suggestion fires tick after tick, nothing changes on disk
|
|
223
|
+
- **drift**: `MAP.md` file:line refs no longer match the code
|
|
224
|
+
- **stale task**: a backlog task references a file or symbol that no longer exists
|
|
225
|
+
- **hidden side effect**: an action changed external state (email sent, money moved, deploy) without a queued approval
|
|
226
|
+
- **unverifiable completion**: a task marked complete without a `Verify:` command that actually ran
|
|
227
|
+
- **slop**: output reads as generated: gradient text, purple gradients, em dashes, hype copy, eyebrow caps, or rambling filler. `atris slop detect` names it; fix it before shipping (see `## taste` and `## voice`)
|
|
204
228
|
|
|
205
229
|
Each has real examples in `lessons.md`. Before nontrivial execution, read the relevant recent lessons.
|
|
206
230
|
|
|
@@ -217,10 +241,10 @@ Pages that summarize or reference other files declare their sources in YAML fron
|
|
|
217
241
|
|
|
218
242
|
If any source was modified after `last_compiled`, the page is stale. Re-read the sources, update the page, bump `last_compiled`.
|
|
219
243
|
|
|
220
|
-
Compounding: when you answer a question that required synthesis across pages, file the answer back
|
|
244
|
+
Compounding: when you answer a question that required synthesis across pages, file the answer back: as a new page or into an existing one. Explorations accumulate.
|
|
221
245
|
|
|
222
246
|
Linting during review catches stale pages, orphans, contradictions, and concepts mentioned but missing their own page.
|
|
223
247
|
|
|
224
248
|
---
|
|
225
249
|
|
|
226
|
-
*Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them
|
|
250
|
+
*Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them.*
|