jev-awesome-skills
AGENTS.md2 starsChanged 53 days agoMITView on GitHub
Applies to every repo under aitofy/. A repo may add a CLAUDE.md of its own for specifics, never to relax these. Copy or symlink this file as AGENTS.md in each public repo so humans and AI agents read the same rules.
- Reads credentials
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 31,700 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 repository10 other files it gives its agents.
- llms-full.txtllms.txt
- llms.txtllms.txt
- jev-actSkill
- jev-awesome-skillsSkill
- jev-gateSkill
- jev-guardSkill
- jev-reviewSkill
- jev-routeSkill
- jev-triageSkill
- jev-verifySkill
The file
We split this AGENTS.md into the rules it gives an agent
9 rules. About 0 are common, 6 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 23
Idempotent operations: Create, launch, close, delete can be safely retried.
- Distinctive: line 30
Zero config, full config: Every option has a sane default.
- Very specific: line 42
Public API is explicit: If it is not exported from index.ts, it is private and may change without notice.
- Very specific: line 48
Storage path is configurable: Never hardcode ~/.aitofy; read it from one place.
- Distinctive: line 49
No hidden background work: No timers, no telemetry, no network calls the user did not ask for.
- Very specific: line 74
Recipes drive adoption: Every GitHub issue that asks "how do I X" becomes an examples/x.ts and a README section.
- Distinctive: line 85
CI must be green before merge: No exceptions for the maintainer.
- Distinctive: line 99
Every number in the README must be measured.
- Distinctive: line 114
Verify live before claiming done: every URL returns 200, the canonical is right, and the sitemap lists only pages that exist.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 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
Aitofy Engineering Rules
Applies to every repo under
aitofy/. A repo may add aCLAUDE.mdof its own for specifics, never to relax these. Copy or symlink this file asAGENTS.mdin each public repo so humans and AI agents read the same rules.
1. Principles
- SSOT — one fact lives in exactly one place. Types in
types.ts, defaults in onedefaultsobject, docs derived from code, never the reverse. - DRY, Rule of Three — duplicate twice, abstract on the third. Only dedupe code that changes for the same reason.
- YAGNI — no code for imagined futures. No feature flags for features that do not exist.
- KISS — the simplest thing that works wins. "Clever" is a code smell.
- Boring by default — stable Node APIs, few dependencies, no framework unless it removes more code than it adds.
2. Code
- TypeScript strict. No
any. Prefer discriminated unions so illegal states cannot be expressed. - Comments are English, explain why, never what. ≤2 lines. No dates, names, or history.
- Names say the domain.
profileManager,fingerprintScript. Neverdata,info,utils,helper,manageralone. - Pure core, IO at the edge. Fingerprint math, config merging, validation: pure functions. Filesystem, Chrome, network: thin wrappers around them.
- Validate at the boundary, trust inside. Parse user input into typed objects once. Internal functions take typed args, not raw objects.
- Errors are actionable. Message states what failed, why, and what to do:
Chrome not found at ${path}. Install Chrome or pass chromePath. - No global mutable state. Anything that would be a global becomes a constructor argument.
- Idempotent operations. Create, launch, close, delete can be safely retried.
- Size targets. Function <30 lines, file <300 lines. Split by responsibility, not by line count.
- Tests test behavior. One
*.test.tsnext to the module. Every bug fix ships with the test that would have caught it.
3. Easy to use
- 30-second quick start. One import, one call, something visible happens.
quickLaunch()is the model. - Zero config, full config. Every option has a sane default. Every default is overridable.
- Progressive disclosure. Simple API on top (
quickLaunch), full API underneath (BrowserProfiles), escape hatch at the bottom (raw CDP/native objects). - One entry point. Everything public is exported from
index.ts. Subpath exports only for optional peer integrations. - Types are the docs. Public options are documented with JSDoc on the type, once.
- Works with npm, pnpm, yarn, bun. ESM + CJS dual build. Node LTS floor stated in
engines. - Same core, three faces. Library, CLI, and (when needed) HTTP API all call the same functions. The CLI never contains logic.
4. Easy to extend
- Stable core, thin adapters. Integrations (
puppeteer,playwright, ...) live inintegrations/and adapt the core. The core never imports an integration. - Extend by adding a file, not editing five. New proxy type, new fingerprint module, new integration: one new file plus one registration line.
- Interfaces are small. An adapter implements the minimum. Optional capabilities are optional methods.
- Public API is explicit. If it is not exported from
index.ts, it is private and may change without notice. - Semver is a promise. Breaking change = major. Deprecate for one minor before removing. Note every change in
CHANGELOG.md.
5. Easy to scale and integrate
- Config from three sources, one precedence. Args > env vars > config file > defaults.
- Storage path is configurable. Never hardcode
~/.aitofy; read it from one place. - No hidden background work. No timers, no telemetry, no network calls the user did not ask for.
- Structured logs, opt-in.
debugflag orDEBUG=aitofy:*. Never log secrets or proxy credentials. - Process-safe. Assume two processes may use the same profile store. Lock files, atomic writes, stale-lock cleanup.
- Machine-readable output. CLI supports
--jsonso it can be piped into other tools.
6. Repo checklist (every public repo)
| File / dir | Purpose |
README.md | Landing page. Hook in 5 lines, comparison table, GIF, 30-second example. |
llms.txt | llmstxt.org index with links; llms-full.txt is every doc concatenated, generated by pnpm docs:llms. |
AGENTS.md | This file. AI coding agents read it before touching code. |
CONTRIBUTING.md | Clone, install, test, PR in under 2 minutes of reading. |
CHANGELOG.md | Keep a Changelog format. Written for users, not for git. |
SECURITY.md | How to report a vulnerability privately. |
LICENSE | MIT. |
examples/ | One runnable file per use case. Copy, paste, run. |
.github/workflows/ci.yml | Typecheck, lint, test, build on every PR. Badge in README. |
.github/ISSUE_TEMPLATE/ | Bug and feature templates. Bug template asks for version, OS, Node, minimal repro. |
7. Growth rules
- Position against a paid incumbent.
"Open-source X alternative"in the description, keywords, and first README line. People search for the incumbent. - Proof over claims. Show benchmark tables, detection scores, screenshots. Update them with each release.
- Show, do not tell. A 10-second GIF beats 500 words. Put it above the fold.
- Recipes drive adoption. Every GitHub issue that asks "how do I X" becomes an
examples/x.tsand a README section. - Label
good first issuefrom day one. Small, well-scoped, with pointers to the exact file. - Respond within 24 hours. An issue with a reply is a community. An issue without one is abandonware.
- Release small, release often. Weekly patch releases with a changelog entry beat quarterly big bangs.
- Zero telemetry, say it loudly. Privacy is a feature for self-hosted tools.
- AI-native DX.
llms.txt+AGENTS.md+ typed API means Cursor, Claude, and Copilot write correct code for your library. That is free distribution.
8. Workflow
- Conventional commits.
feat:,fix:,docs:,refactor:,test:,chore:. Scope optional:feat(cli): .... - Small PRs. <400 lines of diff. One idea per PR.
- CI must be green before merge. No exceptions for the maintainer.
- Docs change with code, same PR. README,
llms.txt, andCHANGELOG.mdare part of the feature. - Delete old lines, never annotate them. No "deprecated, see below", no "TODO remove". Remove it or keep it.
9. Launching a new public repo
Order matters. Each line is a thing that cost time to learn once.
Before the first push
- Build it private or local first. A repo with a skeleton README and no content wastes the only first impression you get; the official
integromat/make-blueprintssits at 4 stars for exactly this reason. AGENTS.mdis a copy of this file, not a symlink — a public repo has to stand alone.- Secret scan the whole tree: API tokens, connection IDs, webhook URLs, emails, org and team IDs. Credentials live in
~/.aff/<service>.env(chmod 600), never in the repo, and.gitignoreneeds!.env.exampleor the example file gets swallowed. - CI runs on a bare runner: no pnpm, no yarn. Scripts must work through
node --run. Any env var the build needs gets a harmless placeholder in the workflow so forks and PRs still build. - Every number in the README must be measured. No invented download counts, stars, or "trusted by".
Publishing
gh repo create <org>/<name> --public --source=. --remote=origin --pushgh repo edit --homepage <site> --add-topic <incumbent-name> --add-topic ...— topics carry the paid incumbent's name, because that is what people search.- Social preview card, 1280×640: write an HTML file, screenshot it headless, upload under Settings → Social preview. There is no API for it. Without one, every link shared to Reddit or X renders as a grey box.
- CI badge and the site link go at the top of the README.
- Referral links anywhere in the repo mean a disclosure line next to each one and a dedicated
/affiliate-disclosurepage on the site.
Site on Cloudflare
wrangler.jsoncwithroutes: [{ pattern, custom_domain: true }]creates the DNS record and the certificate. No dashboard step when the zone is already on Cloudflare.- A script named
deploycollides with pnpm's built-in. Name itship. - Cloudflare injects a managed
robots.txtthat blocks GPTBot, ClaudeBot, Google-Extended and CCBot. Shipping anllms.txtwhile that is on means no AI crawler can read it. Decide per zone, then verify withcurl <site>/robots.txt. - Verify live before claiming done: every URL returns 200, the canonical is right, and the sitemap lists only pages that exist.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

