SLOPSHOPPER

ste-reminder

Appends an ASD-STE100 reminder line to every third prompt you type

newprompt
v0.1.0no licenseupdated 2026-10-08eynsfordcq/.dotagents/.claude/mods/ste-reminder
A shopper browsing a rack in a slop shop
README

Agent Skills

This repo holds our global agent instructions (AGENTS.md), our skills (.agents/skills/, first-party plus npx-vendored third-party with skills-lock.json pins), and sync-global.sh which symlinks both to every agent location. See MAPPINGS.md for where everything links.

Note: prompts/ is legacy and no longer synced. Three prompts moved into skills (gitlab-issue, orchestrator, read-only). Call them explicitly with /skill-name.

Add a third-party skill:

npx skills add <repo> --skill <name> -a universal
./sync-global.sh

Create a new first-party skill:

npx skills init .agents/skills/<skill-name>

Update all skills from the lockfile:

npx skills update

Commit the changed skill directories and skills-lock.json.

Pi packages (pi-packages.txt) are the global pi extension list. Install them:

./install-pi-packages.sh

Add or remove a package with pi install / pi remove, then update pi-packages.txt to match.

Source 1 files
hooks/register.ts 22 lines
1import type { Register } from 'claude-code'
2
3const EVERY = 3
4const REMINDER = 'reminder: respond in ASD-STE100'
5// The terminal sends 'composer'. An SDK host (stream-json stdin) sends 'sdk'. Automatic prompts do not get the reminder.
6const TYPED_ORIGINS = new Set(['composer', 'sdk'])
7
8// The reminder goes in a context block after the prompt. The model reads it, but the transcript keeps the prompt
9// as typed. The system prompt and earlier messages stay the same, so the prompt cache still matches.
10export const register: Register = on => {
11  on('prompt.submit', async ($, e, next) => {
12    if (!TYPED_ORIGINS.has(e.origin.kind)) return next(e)
13
14    // The engine reads the count from the transcript, so it stays correct after a reload or a --resume.
15    // The count does not include this prompt.
16    const prompt = (await $.session.turns()) + 1
17    if (prompt % EVERY !== 0) return next(e)
18
19    return next({ ...e, context: [...(e.context ?? []), REMINDER] })
20  })
21}
22