amplifier-app-paperclip
AGENTS.md1 starsChanged 5 months agoMITView on GitHub
Guidance for human and AI contributors working in this repository. Paperclip is a control plane for AI-agent companies. The current implementation target is V1 and is defined in doc/SPEC-implementation.md. Before making changes, read in this order: doc/SPEC.md is long-horizon product context. doc/SPEC-implementation.md is the concrete V1 build contract. Use embedded PGlite in dev by leaving DATABASE_URL unset. This starts: Quick checks: Reset local dev DB: 1. Keep changes company-scoped. Every domain entity should be scoped to a company and company…
- Deletes or force-pushes
- Installs packages
- Commits and pushes
We split this AGENTS.md into the rules it gives an agent
17 rules. About 0 are common, 11 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Before making changes, read in this order:
- Very specific: line 36
Use embedded PGlite in dev by leaving DATABASE_URL unset.
- Distinctive: line 65
Every domain entity should be scoped to a company and company boundaries must be enforced in routes/services.
- Distinctive: line 68
If you change schema/API behavior, update all impacted layers:
- Very specific: line 81
Do not replace strategic docs wholesale unless asked.
- Very specific: line 82
Prefer additive updates. Keep doc/SPEC.md and doc/SPEC-implementation.md aligned.
- Very specific: line 84
Keep repo plan docs dated and centralized.
- Distinctive: line 89
When changing data model:
- Very specific: line 92
Ensure new tables are exported from packages/db/src/schema/index.ts
- Distinctive: line 111
Default local/agent test path:
- Distinctive: line 124
Run the browser suites only when your change touches them or when you are explicitly verifying CI/release flows.
- Distinctive: line 128
Run this full check before claiming repo work done in a PR-ready hand-off, or when the change scope is broad enough that targeted checks …
- Distinctive: line 136
If anything cannot be run, explicitly report what was not run and why.
- Distinctive: line 149
write activity log entries for mutations
- Distinctive: line 154
Keep routes and nav aligned with available API surface
- Distinctive: line 155
Use company selection context for company-scoped pages
- Very specific: line 160
When creating a pull request (via gh pr create or any other method), you must read and fill in every section of …
≈ “Common” is an estimate: at least 1 in 5 of the 36,368 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
Guidance for human and AI contributors working in this repository.
1. Purpose
Paperclip is a control plane for AI-agent companies.
The current implementation target is V1 and is defined in doc/SPEC-implementation.md.
2. Read This First
Before making changes, read in this order:
doc/GOAL.mddoc/PRODUCT.mddoc/SPEC-implementation.mddoc/DEVELOPING.mddoc/DATABASE.md
doc/SPEC.md is long-horizon product context.
doc/SPEC-implementation.md is the concrete V1 build contract.
3. Repo Map
server/: Express REST API and orchestration servicesui/: React + Vite board UIpackages/db/: Drizzle schema, migrations, DB clientspackages/shared/: shared types, constants, validators, API path constantspackages/adapters/: agent adapter implementations (Claude, Codex, Cursor, etc.)packages/adapter-utils/: shared adapter utilitiespackages/plugins/: plugin system packagesdoc/: operational and product docs
4. Dev Setup (Auto DB)
Use embedded PGlite in dev by leaving DATABASE_URL unset.
pnpm install
pnpm devThis starts:
- API:
http://localhost:3100 - UI:
http://localhost:3100(served by API server in dev middleware mode)
Quick checks:
curl http://localhost:3100/api/health
curl http://localhost:3100/api/companiesReset local dev DB:
rm -rf data/pglite
pnpm dev5. Core Engineering Rules
- Keep changes company-scoped. Every domain entity should be scoped to a company and company boundaries must be enforced in routes/services.
- Keep contracts synchronized. If you change schema/API behavior, update all impacted layers:
packages/dbschema and exportspackages/sharedtypes/constants/validatorsserverroutes/servicesuiAPI clients and pages
- Preserve control-plane invariants.
- Single-assignee task model
- Atomic issue checkout semantics
- Approval gates for governed actions
- Budget hard-stop auto-pause behavior
- Activity logging for mutating actions
- Do not replace strategic docs wholesale unless asked.
Prefer additive updates. Keep
doc/SPEC.mdanddoc/SPEC-implementation.mdaligned. - Keep repo plan docs dated and centralized.
When you are creating a plan file in the repository itself, new plan documents belong in
doc/plans/and should useYYYY-MM-DD-slug.mdfilenames. This does not replace Paperclip issue planning: if a Paperclip issue asks for a plan, update the issueplandocument per thepaperclipskill instead of creating a repo markdown file.
6. Database Change Workflow
When changing data model:
- Edit
packages/db/src/schema/*.ts - Ensure new tables are exported from
packages/db/src/schema/index.ts - Generate migration:
pnpm db:generate- Validate compile:
pnpm -r typecheckNotes:
packages/db/drizzle.config.tsreads compiled schema fromdist/schema/*.jspnpm db:generatecompilespackages/dbfirst
7. Verification Before Hand-off
Default local/agent test path:
pnpm testThis is the cheap default and only runs the Vitest suite. Browser suites stay opt-in:
pnpm test:e2e
pnpm test:release-smokeRun the browser suites only when your change touches them or when you are explicitly verifying CI/release flows.
For normal issue work, run the smallest relevant verification first. Do not default to repo-wide typecheck/build/test on every heartbeat when a narrower check is enough to prove the change.
Run this full check before claiming repo work done in a PR-ready hand-off, or when the change scope is broad enough that targeted checks are not sufficient:
pnpm -r typecheck
pnpm test:run
pnpm buildIf anything cannot be run, explicitly report what was not run and why.
8. API and Auth Expectations
- Base path:
/api - Board access is treated as full-control operator context
- Agent access uses bearer API keys (
agent_api_keys), hashed at rest - Agent keys must not access other companies
When adding endpoints:
- apply company access checks
- enforce actor permissions (board vs agent)
- write activity log entries for mutations
- return consistent HTTP errors (
400/401/403/404/409/422/500)
9. UI Expectations
- Keep routes and nav aligned with available API surface
- Use company selection context for company-scoped pages
- Surface failures clearly; do not silently ignore API errors
10. Pull Request Requirements
When creating a pull request (via gh pr create or any other method), you must read and fill in every section of .github/PULL_REQUEST_TEMPLATE.md. Do not craft ad-hoc PR bodies — use the template as the structure for your PR description. Required sections:
- Thinking Path — trace reasoning from project context to this change (see
CONTRIBUTING.mdfor examples) - What Changed — bullet list of concrete changes
- Verification — how a reviewer can confirm it works
- Risks — what could go wrong
- Model Used — the AI model that produced or assisted with the change (provider, exact model ID, context window, capabilities). Write "None — human-authored" if no AI was used.
- Checklist — all items checked
11. Definition of Done
A change is done when all are true:
- Behavior matches
doc/SPEC-implementation.md - Typecheck, tests, and build pass
- Contracts are synced across db/shared/server/ui
- Docs updated when behavior or commands change
- PR description follows the PR template with all sections filled in (including Model Used)
11. Fork-Specific: HenkDz/paperclip
This is a fork of paperclipai/paperclip with QoL patches and an external-only Hermes adapter story on branch feat/externalize-hermes-adapter (tree).
Branch Strategy
feat/externalize-hermes-adapter→ core has nohermes-paperclip-adapterdependency and no built-inhermes_localregistration. Install Hermes via the Adapter Plugin manager (@henkey/hermes-paperclip-adapteror afile:path).- Older fork branches may still document built-in Hermes; treat this file as authoritative for the externalize branch.
Hermes (plugin only)
- Register through Board → Adapter manager (same as Droid). Type remains
hermes_localonce the package is loaded. - UI uses generic config-schema + ui-parser.js from the package — no Hermes imports in
server/orui/source. - Optional:
file:entry in~/.paperclip/adapter-plugins.jsonfor local dev of the adapter repo.
Local Dev
- Fork runs on port 3101+ (auto-detects if 3100 is taken by upstream instance)
npx vite buildhangs on NTFS — usenode node_modules/vite/bin/vite.js buildinstead- Server startup from NTFS takes 30-60s — don't assume failure immediately
- Kill ALL paperclip processes before starting:
pkill -f "paperclip"; pkill -f "tsx.*index.ts" - Vite cache survives
rm -rf dist— delete both:rm -rf ui/dist ui/node_modules/.vite
Fork QoL Patches (not in upstream)
These are local modifications in the fork's UI. If re-copying source, these must be re-applied:
- stderr_group — amber accordion for MCP init noise in
RunTranscriptView.tsx - tool_group — accordion for consecutive non-terminal tools (write, read, search, browser)
- Dashboard excerpt —
LatestRunCardstrips markdown, shows first 3 lines/280 chars
Plugin System
PR #2218 (feat/external-adapter-phase1) adds external adapter support. See root AGENTS.md for full details.
- Adapters can be loaded as external plugins via
~/.paperclip/adapter-plugins.json - The plugin-loader should have ZERO hardcoded adapter imports — pure dynamic loading
createServerAdapter()must include ALL optional fields (especiallydetectModel)- Built-in UI adapters can shadow external plugin parsers — remove built-in when fully externalizing
- Reference external adapters: Hermes (
@henkey/hermes-paperclip-adapterorfile:) and Droid (npm)
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 28,693 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository38 other files it gives its agents.
- docs/api/agents.mdAGENTS.md
- packages/plugins/plugin-llm-wiki/agents/wiki-maintainer/AGENTS.mdAGENTS.md
- packages/plugins/plugin-llm-wiki/fixtures/basic-root/AGENTS.mdAGENTS.md
- packages/plugins/plugin-llm-wiki/templates/AGENTS.mdAGENTS.md
- server/src/onboarding-assets/ceo/AGENTS.mdAGENTS.md
- server/src/onboarding-assets/default/AGENTS.mdAGENTS.md
- company-creatorSkill
- create-agent-adapterSkill
- deal-with-security-advisorySkill
- doc-maintenanceSkill
- prcheckloopSkill
- pr-reportSkill
- release-changelog-discord-messageSkill
- release-changelogSkill
- releaseSkill
- design-guideSkill
- index-refreshSkill
- paperclip-distillSkill
- wiki-ingestSkill
- wiki-lintSkill
- LLM Wiki MaintainerSkill
- wiki-querySkill
- doc-maintenanceSkill
- issue-triageSkill
- task-planningSkill
- qa-acceptanceSkill
- github-pr-workflowSkill
- agent-browserSkill
- release-announcementSkill
- design-critiqueSkill
- diagnose-why-work-stoppedSkill
- paperclip-converting-plans-to-tasksSkill
- paperclip-create-agentSkill
- paperclip-create-pluginSkill
- paperclip-devSkill
- paperclipSkill
- para-memory-filesSkill
- terminal-bench-loopSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

