atris/skills/endgame/SKILL.md
Backward partner to /flow. Picks the next horizon from inbox + wiki + lessons, writes the reverse path as tagged tasks to TODO.md so /autopilot can pursue it tick by tick. Triggers on: endgame, what's the last move, where are we heading, reverse engineer, work backward.
npx skillsauth add atrislabs/atris endgameInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Sister skill: /flow — flow runs the same engine in reverse. flow chains forward from identity (who you are → today's next move). endgame chains backward from horizon (where you're going → today's next move). They meet at the same point: the next thing the agent should ship. Use both. Run flow at sunrise to set identity, run endgame at every TODO.md boundary to set horizon, and let /autopilot tick between them.
Purpose: help the human (or agent) reach their intent and goal faster by leveraging what the wiki already knows. Without endgame, they redo thinking. With endgame, they reach the next move in one pass — and write that move into TODO.md so the autopilot loop can pursue it without re-asking.
Most planning is forward-greedy: what's the next ticket? Endgame is backward: what does winning look like, and what's the shortest path from here?
"You can't connect the dots looking forward; you can only connect them looking backward." — Steve Jobs
Before anything else, read atris/TODO.md. If it already has a ## Endgame section AND uncompleted [endgame]-tagged tasks in ## Backlog, do not pick a new endgame. Instead reply: "current endgame <slug> still active — N steps remaining. Run /autopilot to continue, or force /endgame to reset." Then exit.
This rule exists so the loop pursues the current horizon to completion instead of constantly repicking.
Before picking a new horizon, read what already exists. The wiki + logs are the user's paid-for memory; not using them means they're paying twice.
atris/lessons.md — past surprises and failures the validator wrote down. Read this FIRST. Avoid horizons that hit the same rocks.atris/wiki/STATUS.md — current state, last loop findings, suggested next ingestsatris/wiki/index.md — what pages already existatris/wiki/briefs/ — most recent cross-cutting brief pages (often already contain a horizon)atris/MAP.md — what code exists todayatris/TODO.md — what's queued, what's doneatris/logs/YYYY/ — last 7-14 days of journals; scan ## Inbox sections for unfulfilled ideas (these are user-seeded horizons)atris/PERSONA.md — current identity (paired with /flow's forward direction)atris/business/<slug>/BUSINESS.md if a business workspaceInbox items are the primary horizon source. If recent journal ## Inbox sections have unfulfilled ideas, pick the oldest one and run the three moves on it. Only fall back to reactive signals (wiki staleness, broken refs) if the inbox is empty.
If the horizon is genuinely unreadable from those sources, ask 1–3 sharp questions. Never more. Never a wall of text.
v1.1.0 cut: prior versions had two more moves —
IDENTITY("who are we when we've arrived") andGAP("already true vs not yet"). Identity was philosophical overhead; GAP was just the diff between HORIZON and current state, which the wiki + MAP already give you. Three moves is enough. Less drift surface, faster ticks, fewer phrases for the validator to verify.
After running the three moves, write the result to atris/TODO.md:
## Endgame section (above ## Backlog) with this exact shape:## Endgame
**Slug:** <kebab-case-slug>
**Picked:** YYYY-MM-DD HH:MM
**Horizon:** <one-line summary of HORIZON>
**Source:** <inbox-item | wiki-signal | user-prompt> (so we know where it came from)
## Backlog:- **T1:** <step 1 description> [endgame]
**Verify:** <deterministic-check>
- **T2:** <step 2 description> [endgame]
**Verify:** <deterministic-check>
- **T3:** <step 3 description> [endgame]
**Verify:** <deterministic-check>
The tag must be exactly [endgame] (parser only matches \w+, no colons or hyphens). The slug lives in the section header.
- **TN:** RSI audit: read this endgame's halts, verify failures, and lessons. If the loop itself broke during this endgame (parser, reward, scorecard, verify wiring), fix it. If nothing broke, no-op. [endgame]
**Verify:** npm test
This is non-negotiable. Every endgame ends by pointing the loop inward. The loop improves what it ships (RL) AND improves itself (RSI). Same chain, last task, always.
Each task must include a Verify: line with a deterministic check:
npm test or npm run test:featuregrep -q "pattern" file.jstest -f path/to/file.mdnode -e "process.exit(...)" (or any shell command)The verify command must:
Use T1, T2, T3 … as IDs (or W1/E1/etc per endgame domain). Single uppercase letter + digits, optional trailing lowercase letter (the parser was extended in commit 4db14d9 to accept W3b-style validator sub-task IDs).
## Notes so the reasoning is preserved:### Endgame picked — HH:MM PDT
slug: <slug>
source: <where>
HORIZON
<one paragraph>
REVERSE PATH
ENDGAME
← T5
← T4
← T3
← T2
← T1 (next move)
NEXT MOVE
T1: <description>
Verify: <check-command>
Why this first: <one line>
This is the archive — once the endgame closes, future /endgame runs can read this to learn what worked.
If there was a ## Endgame section in TODO.md before this run AND all its [endgame] tasks are done, append a closing entry to today's journal ## Notes:
### Endgame closed — HH:MM PDT
slug: <prior-slug>
shipped: N/N steps
commits: <list of commits since endgame was picked>
lessons: <one-line takeaway>
Then remove the old ## Endgame section from TODO.md before writing the new one. Completed [endgame] tasks should already have moved to ## Completed via the validator.
When a human runs /endgame directly (not from a cron tick), show the three moves on screen first, ask one yes/no for confirmation, then write to TODO.md only after the human says go. When called from autopilot at a boundary, skip the confirmation — write straight to TODO.md and journal it.
HORIZON
[one paragraph: concrete, falsifiable, not a slogan]
REVERSE PATH
ENDGAME
← step N (add or eliminate)
← step N-1
← ...
← step 1 (this week)
NEXT MOVE
[one concrete action, doable in one session]
Verify: [deterministic check — test, grep, file, exit code]
Why this first: [one line]
[[atris/wiki/...]] refs.[endgame] only — no colons, no slugs in the tag. Slug lives in the section header.This skill is designed to be runnable by the agent on its own state, not just by humans. When atris autopilot finishes the last [endgame] task in the current horizon, the next tick's boundary check invokes /endgame against the new state, picks the next horizon from inbox/wiki, writes it to TODO.md, and queues the next move — without a human pulling the trigger.
| Skill | When |
|---|---|
| autopilot | Run one tick of the current endgame |
| decide | You have N options and need to pick |
| improve | You want to clean up drift |
| wiki | You want to capture knowledge |
| loop | You want the autopilot heartbeat scheduled |
| endgame | No current horizon, current one done, or work feels busy-but-pointless |
[endgame:slug] — parser only accepts [\w+], will fail silently.testing
Detects AI slop and fixes it, especially in memos, docs, READMEs, messages, PRDs, and other written output. Based on Wikipedia's AI Cleanup patterns plus memo-specific anti-slop rules. Triggers on "copy edit", "review writing", "humanize", "deslopper", "ai patterns", "make it sound human", "AI slop", "anti-slop", "memo".
tools
Use when an agent needs to inspect or send local macOS iMessage through Atris CLI. Triggers on iMessage, Messages.app, local text messages, chat.db, or texting someone from the user's Mac.
databases
Submit, list, resolve, close, or delete Atris customer feedback. Use when user types /feedback or asks to triage the feedback queue.
development
Fast research sweep — arxiv, semantic scholar, github, web. Finds papers, scores relevance, extracts actionable insights, stores to wiki. Triggers on: research search, find papers, latest research, arxiv, what's new in, sweep papers, research sweep.