Agent skills distilled from the hard-won lessons of world-renowned programmers, in the spirit of "97 Things Every Programmer Should Know"
> /plugin marketplace add oribarilan/97> /plugin install 97@97-marketplace
FAQ
97 is a Claude Code plugin with 12 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes api-design, before-you-refactor, build-deploy-and-tooling. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Repo: oribarilan/97
Skills your coding agent uses at the moment of decision: when it's about to refactor, write a test, design an API, or commit. They draw on Fowler on refactoring, 12-factor on configuration and deploys, Ousterhout and Liskov on API design, Nygard on resilience patterns, and others.
The project is named after 97 Things Every Programmer Should Know (O'Reilly, ed. Kevlin Henney) and follows the same idea: one principle at a time, applied when it matters. Every principle is attributed to its original author. Principles are language-agnostic and durable.
Works on Linux, macOS, and Windows. Node 18+.
Three supported harnesses. Pick the one you use.
/plugin marketplace add oribarilan/97
/plugin install 97@97-marketplace
Updates ship via the marketplace; run /plugin update 97 when a new version is available.
copilot plugin marketplace add oribarilan/97
copilot plugin install 97@97-marketplace
Updates ship via the marketplace; run copilot plugin update 97 when a new version is available.
Add to your OpenCode config file.
{
"plugin": [
"97@git+https://github.com/oribarilan/97.git"
]
}
Restart OpenCode. The plugin pulls the latest commit on each restart.
For reproducible behavior across sessions, pin to a specific tag (#vX.Y.Z):
{
"plugin": [
"97@git+https://github.com/oribarilan/97.git#v0.5.0"
]
}
| Skill | When it applies |
|---|---|
using-97 | Always โ entry skill that loads the trigger map |
before-you-refactor | Considering, evaluating, or performing a refactor, restructure, cross-file rename, or cleanup |
clean-code | Writing or reviewing functions, classes, naming, or โฅ3 lines of non-trivial logic (includes Single Responsibility Principle (SRP), DRY, KISS, YAGNI) |
domain-modeling | Introducing, reviewing, or renaming a top-level type/table/domain concept, or deciding where state lives |
api-design | Designing or reviewing a public API, function signature, module boundary, exported type, or any contract other code depends on (includes LSP, SRP at the boundary) |
testing-discipline | Writing or reviewing tests, designing test data, naming a test, choosing what to assert, or writing test helpers/mocks/fixtures |
correctness-traps | Writing or reviewing error handling, floating-point math, concurrent code, remote calls, singletons, hot-path data structures, or high-volume log statements |
security-and-trust-boundaries | Writing or reviewing code that parses user input, builds SQL/shell commands, handles secrets/credentials, changes auth checks, deserializes untrusted data, or constructs paths/URLs from input |
observability | Writing or reviewing request handlers, RPCs, or background jobs for production; adding tracing, metrics, or structured-log calls; or making diagnosability decisions |
build-deploy-and-tooling | Writing, reviewing, or changing build scripts, CI config, deploy pipelines, repo setup, or evaluating a new tool/dependency |
self-review | About to commit, finish a task, open a PR, summarize work, or when asked for a review or hand-off of your own work |
working-with-users-and-team | Gathering or interpreting requirements, estimating effort, or communicating with stakeholders about what to build |
12 skills total: one entry skill plus 11 themed skills. Every principle
is cited and attributed in the skill's principles.md.
Every principle the agent applies is attributed to its original author.
Each skill ships a principles.md next to its SKILL.md with, per
principle: the author, a link to the source (CC-BY-3.0 essay, book
chapter, RFC, or specification as appropriate), our paraphrase, and
how the agent applies it.
The sources currently cited:
You can ask the agent at any time: "Who wrote the principle you just
applied, and why does it say what it says?" The agent will open the
relevant principles.md and tell you who wrote it, link the source,
and explain the reasoning. 97 doubles as a reading list โ the
principles point back to the books and essays they came from.
The security-and-trust-boundaries and observability skills are
mostly written for this project, drawing on sources outside 97 Things;
see CONTENT-LICENSE.md.
Standard coding benchmarks (e.g., SWE-bench) test whether an agent produces working code: pass the tests, fix the bug, return the right answer. An agent can score 100% on SWE-bench with f-string SQL and a god-function. Those benchmarks don't measure what 97 targets: whether the agent writes code a senior engineer would approve.
We built a craft-quality eval instead. 11 scenarios (one per skill), each with a latent craft issue the skill should catch. Each scenario runs 15 times on two arms: with 97 and without. An independent judge (claude-opus-4.7) compares both diffs blindly on correctness, code quality, and skill-specific criteria.
With 97, agents write code that is equal or better 77โ95% of the time, and strictly better in 62โ77% of cases, across 11 dimensions including security, observability, testing, and API design.
| Wins | Never worse | |
|---|---|---|
| claude-opus-4.6 | 77% | 95% |
| gpt-5.5 | 62% | 77% |
Per-skill results โ win rate with ties in parentheses:
| Skill | gpt-5.5 | opus-4.6 |
|---|---|---|
| observability | 93% (7%) | 100% |
| security | 87% | 27% (67%) |
| api-design | 70% (3%) | 93% |
| clean-code | 70% (10%) | 70% (17%) |
| build-deploy | 67% (23%) | 100% |
| domain-modeling | 67% (27%) | 80% (3%) |
| working-with-users | 63% (7%) | 100% |
| before-you-refactor | 60% (3%) | 93% (7%) |
| self-review | 50% (3%) | 20% (80%) |
| testing-discipline | 50% (3%) | 90% |
| correctness-traps | 3% (77%) | 77% (20%) |
These scenarios started as an internal eval to avoid regressions and track progress across 97 versions. They're custom-built to surface each skill's value, not pulled from an established benchmark, but the results felt worth sharing. If you know of a benchmark that would be a good fit, please open an issue and I'll run it.
superpowers or BMAD?They sit at different layers, so you can run them side by side:
| Layer | Project | What it changes |
|---|---|---|
| Methodology | BMAD-METHOD | Which role the agent plays and which phase of the SDLC it's in (PM, Architect, Dev, SMโฆ) |
| Process | superpowers | How the agent works โ when to plan, how to debug, when work is verified |
| Craft | 97 | What makes the code good once the agent is writing โ naming, API shape, error handling, testing, security |
Take writing a test:
BMAD picks who on the agent team writes it (the Dev persona).superpowers/test-driven-development decides whether a test gets written.97/testing-discipline decides what makes that test any good.97's entry skill draws an explicit line at the superpowers boundary: process
skills run first. superpowers/verification-before-completion asks did it work;
97/self-review asks is it well-considered.
Partially, and on purpose. SRP is named twice โ in clean-code for one-reason-to-change at unit scope, and in api-design for the same check at module boundaries; before-you-refactor carries the SRP trigger to consider a split. LSP is in api-design. DRY is in clean-code. KISS and YAGNI surface as Red Flags in clean-code against speculative knobs and unused hooks.
OCP, ISP, and DIP are not promoted by name. The substance closest to ISP and DIP lives in api-design as narrow interfaces, abstractions at boundaries, and Ousterhout's deep modules. OCP is intentionally left aside โ speculative extension points conflict with YAGNI. The Giants list above is built from authors and works, not from the SOLID acronym.
superpowers by Jesse Vincent for the multi-harness distribution patternLICENSE.CONTENT-LICENSE.md for the full policy and
takedown commitment.We use just as the local task runner.
Run just with no args to list recipes:
just # list available recipes
just check # everything CI runs: lint + format-check + smoke
just lint # structural lint of skills/
just format # prettier --write on JS/JSON/YAML
CI uses npm test directly (which is the same as just check), so
contributors who prefer npm don't need to install just:
npm test # same as `just check`
npm run lint # same as `just lint`
npm run smoke # same as `just test`
One devDependency: prettier. Zero runtime deps.
For the full contributor guide โ repo layout, changelog discipline, release
process, CI/CD, and the multi-harness adapter pattern โ see
CONTRIBUTE.md. For agent-specific conventions, see
AGENTS.md.
.claude-plugin/
marketplace.json
plugin.json
.gitattributes
.github/
workflows/
release.yml
test.yml
.gitignore
.opencode/
plugins/
97.js
.prettierignore
.prettierrc.json
.todo/
backlog/
add-code-review-skill.md
add-data-and-schema-changes-skill.md
restyle-readme-tagline-and-faq.md
done/
backlog/
surface-attribution-affordance.md
US-97-mvp/
1-scaffold-plugin-bundle.md
2-bootstrap-using-97.md
3-skill-before-you-refactor.md
main.md
reference/
superpowers-plugin.js
test-driven-development-SKILL.md
using-superpowers-SKILL.md
release-v0.1.0.md
skill-api-and-interface-design.md
skill-build-deploy-and-tooling.md
skill-domain-modeling.md
skill-error-and-correctness-traps.md
skill-pre-commit-self-review.md
skill-testing-discipline.md
skill-working-with-users-and-team.md
skill-writing-clean-code.md
US-acronym-discoverability/
main.md
US-bench-driven-skill-improvements/
1-using-97-audit-framing.md
2-security-landmine-checklist.md
3-pre-commit-file-scan-step.md
main.md
US-prose-cleanup/
1-error-and-correctness-traps.md
10-build-deploy-and-tooling.md
11-working-with-users-and-team.md
12-using-97.md
13-agents-and-contribute.md
14-readme.md
15-meta-rule-and-changelog.md
2-pre-commit-self-review.md
3-security-and-trust-boundaries.md
4-observability.md
5-before-you-refactor.md
6-writing-clean-code.md
7-api-and-interface-design.md
8-testing-discipline.md
9-domain-modeling.md
main.md
US-v0.2-multi-harness/
main.md
US-v0.3-council-feedback/
add-security-traps-skill.md
decide-agents-claude-md-strategy.md
decide-feedback-loop-approach.md
decide-lint-budget-policy.md
drop-once-per-file-rule.md
fix-smoke-test-bootstrap-injection.md
freeze-harness-count-policy.md
main.md
node-rewrite-session-start.md
patch-trigger-coverage-gaps.md
prune-bootstrap-urgency.md
prune-done-checkboxes.md
prune-working-with-users-and-team.md
tighten-writing-clean-code.md
US-v1.0-canon-expansion/
0a-citation-scheme-spec.md
0b-citation-scheme-migration.md
99a-overlap-matrix-audit.md
99b-voice-review-pass.md
add-observability-skill.md
add-stakes-calibration.md
enrich-api-design-ousterhout-liskov-king.md
enrich-before-you-refactor-fowler.md
enrich-build-deploy-twelve-factor.md
enrich-domain-modeling-wlaschin.md
enrich-error-and-correctness-release-it.md
enrich-testing-discipline-goos.md
main.md
OVERLAP-MATRIX.md
AGENTS.md
CHANGELOG.md
CITATION-SCHEME.md
CONTENT-LICENSE.md
CONTRIBUTE.md
hooks/
hooks.json
session-start.mjs
justfile
LICENSE
package-lock.json
package.json
README.md
scripts/
lib/
run-harness.mjs
lint-skills.mjs
smoke-load.mjs
test-trigger-e2e.mjs
test-trigger-force.mjs
trigger-fixtures.json
skills/
.gitkeep
api-design/
principles.md
SKILL.md
before-you-refactor/
principles.md
SKILL.md
build-deploy-and-tooling/
principles.md
SKILL.md
clean-code/
principles.md
SKILL.md
correctness-traps/
principles.md
SKILL.md
domain-modeling/
principles.md
SKILL.md
observability/
principles.md
SKILL.md
security-and-trust-boundaries/
principles.md
SKILL.md
self-review/
principles.md
SKILL.md
testing-discipline/
principles.md
SKILL.md
using-97/
SKILL.md
working-with-users-and-team/
principles.md
SKILL.mdยฉ 2026 Flowy ยท Free and open source
Built for Claude Code ยท Not affiliated with Anthropic