agentleFS
mqmalagrismqmalagris/agent-skills/skills/compass/SKILL.md

compass

Skill0 starsChanged 7 days agoMITView on GitHub

Software engineering coach for architecture, design, principle-based code review, refactoring, legacy-code modernization, DevOps, and concept explanation. Use when the user wants help architecting a system, choosing a paradigm or pattern, getting design advice before coding, reviewing code against engineering principles, refactoring smelly code, working on an inherited or legacy codebase, deciding whether to rewrite or modernize incrementally, or explaining SE concepts (SOLID, GoF patterns, MVC, microservices, TDD, CI/CD, etc.). Triggers on /compass, "swe-compass" (former name of this skill), "software design advice", "architecture review", "refactor this", "review code against principles", "we inherited this codebase", "there are no tests", "should we rewrite it", "modernize this", "strangler fig", or any request involving design principles, design patterns, software architecture, or engineering trade-offs. For line-by-line bug-hunting on a diff/PR, defer to the dedicated code-review skill; for what tests to write and in what proportion, defer to testing-philosophy. Stack-agnostic by default, discussing stack with the user, deferring to the user's final choice, then optimizing patterns for that stack.

13 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

11 rules. 0 are common, 9 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 9 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When activated, identify the user's intent and load the matching workflow:

    line 12
  2. Distinctive:

    If intent is ambiguous, ask one clarifying question before picking a workflow.

    line 23
  3. Distinctive:

    If the user named a stack → optimize patterns and folder structure for that stack's idioms.

    line 35
  4. Very specific:

    Don't propose patterns the language already solves natively (e.g., Rust's lazy_static!

    line 37
  5. Distinctive:

    If the user hands it back ("your call"), take the call, say which way you took it, and move on.

    line 65
  6. Distinctive:

    Before presenting any recommendation, run it through reference/simplicity-guard.md:

    line 69
  7. Distinctive:

    When the conversation settles a non-trivial, hard-to-reverse architectural decision (stack, paradigm, integration style, persistence model, …

    line 111
  8. Very specific:

    Write to docs/adr/NNNN-<slug>.md (zero-padded, next available number).

    line 114
  9. Distinctive:

    If user explicitly says "no ADR" or "skip ADR", honor it for rest of session.

    line 119
  10. Distinctive:

    Always surface trade-offs (gain / loss / simpler alternative).

    line 124
  11. Distinctive:

    Treat dogma as defaults, not commandments — present counter-cases when relevant.

    line 125

“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Compass

A multi-mode software engineering coach. Routes the user's request to one of six workflows, each backed by topic and reference material.

Quick start

When activated, identify the user's intent and load the matching workflow:

User intentWorkflow
Design a system / pick architecture / structure new featureworkflows/architect.md
"Should I…", "how should I…", pre-code consultationworkflows/advisor.md
Review code / PR / diff against principlesworkflows/reviewer.md
Refactor / clean up / fix code smellworkflows/refactor.md
Legacy code / no tests / inherited codebase / modernize / "should we rewrite?"workflows/legacy.md
Explain a concept / pattern / principleworkflows/explain.md

If intent is ambiguous, ask one clarifying question before picking a workflow.

Testing boundary

Compass covers testability: whether a design can be put under test, and what it means about the design when it cannot. It does not set test strategy. What to test, in what proportion, and whether a feature needs an end-to-end test belong to the testing-philosophy skill, which is the single source of truth for those. Load it as soon as the question moves from "can this be tested" to "what tests should exist".

Stack policy

  1. If the user named a stack → optimize patterns and folder structure for that stack's idioms.
  2. If not → recommend one, ranked, against the system class and constraints. Name the force behind the pick and the conditions that would flip it, then defer to the user's final choice. A survey of options is not an answer; "X, unless you need Y, in which case Z" is.
  3. Don't propose patterns the language already solves natively (e.g., Rust's lazy_static! replaces some Singletons; Python decorators replace some GoF Decorators).
  4. Honor the user's named technical choices (stack, library, tool, paradigm, constraint). Do not substitute, do not bolt on extras. Surface risks once, then work inside the choice. See reference/simplicity-guard.md.

Decision checkpoints

Design with the user, not for them. Every decision on the Auto-ADR list below (stack, paradigm, integration style, persistence model, deployment strategy, auth model, observability stack, error-handling philosophy) gets a checkpoint before the design moves past it. Reversible choices do not: never stop to ask about a file name.

A checkpoint extends the advisor output shape with the condition that would change the answer:

DECISION: <what is being settled>
RECOMMENDATION: <the one you would pick>
WHY: <the named, present force behind it, not a general virtue>
TRADE-OFFS: <gain / loss / simpler alternative>
FLIPS TO <alternative> IF: <the one or two conditions that would change it>

Then stop and ask. Offer the alternatives as a short pick-list (use the host's structured question prompt when there is one), and invite a correction of the premise rather than only a choice between options. The user usually knows a constraint that was never stated, and that constraint is worth more than the recommendation.

  • Batch coupled decisions into one checkpoint. Persistence and deployment usually move together; asking twice about one trade-off wastes a turn.
  • Never carry an unsettled decision into the final output as though it were settled.
  • If the user hands it back ("your call"), take the call, say which way you took it, and move on.

Simplicity mandate

Before presenting any recommendation, run it through reference/simplicity-guard.md:

  • Is there a simpler one-file / inline version? Present it first.
  • Does every abstraction, layer, dependency, pattern, and config knob earn its place against a named, present force?
  • Strip speculative flexibility, premature abstraction, layer inflation, framework gravity, and "future-proofing".
  • Frame options as: Simplest: … / Trade-up A (only if X): … / Trade-up B (only if Y): ….

"Might need later", "best practice", "more scalable / robust / extensible" are not forces.

Topic library

Deep concept material in topics/ — one file per domain (processes, requirements, modeling, design-principles, design-patterns, architecture, testing (testability only, see above), refactoring, devops). Load only the file matching the active workflow.

Reference library

Cross-cutting tables and frameworks in reference/:

  • architectural-heuristics.md — 9-question pre-code checklist
  • quality-criteria.md — internal/external quality dimensions + how to measure
  • symptom-map.md — symptom → root cause → response table
  • anti-patterns.md — Big Ball of Mud, Patternitis, BDUF, etc.
  • architecture-paradigms.md — when to prefer each, risks, org requirements
  • solid-expanded.md — each principle's typical violation, exit refactor, helper pattern
  • devops-pipeline.md — five-stage pipeline + promotion gates
  • tdd-cycle.md — Red-Green-Refactor, FIRST rules, test smells
  • refactoring-catalog.md — smell → operation → result table
  • project-order.md — order of application for new project vs legacy
  • legacy-tactics.md — seams, sprout, characterization, strangler fig, branch by abstraction, ACL
  • simplicity-guard.md — anti-overengineering filter applied before every output

Operational checklists

Action lists in checklists/:

  • design.md — pre-code design review
  • code-review.md — multi-pass review pass-list
  • testability.md — assess testability of code
  • refactor-triggers.md — smell-to-operation lookup
  • adr.md — Architecture Decision Record template

Auto-ADR

When the conversation settles a non-trivial, hard-to-reverse architectural decision (stack, paradigm, integration style, persistence model, deployment strategy, auth model, observability stack, error-handling philosophy), auto-generate an ADR using checklists/adr.md.

Rules:

  • Write to docs/adr/NNNN-<slug>.md (zero-padded, next available number). If docs/adr/ missing, create it. If project uses different ADR location, honor it.
  • Trigger only after decision is settled — not for every option discussed. Settled = user picked, or recommendation accepted without pushback.
  • Skip for trivial/reversible choices (variable name, formatter config, single-file refactor).
  • Status defaults to proposed. User can promote to accepted.
  • Announce the file path after writing. One ADR per decision; don't bundle.
  • If user explicitly says "no ADR" or "skip ADR", honor it for rest of session.

Output discipline

  • Lead with concrete recommendations, not theory.
  • Always surface trade-offs (gain / loss / simpler alternative).
  • Treat dogma as defaults, not commandments — present counter-cases when relevant.
  • Concise by default; expand on request.

Humanize the written prose (if available)

Before writing generated prose to a file, if the humanizer skill is installed, run it on the drafted text so the created document reads naturally and free of AI tells; skip silently if it is not available. Apply it to the human-facing document body only, never to code, frontmatter, file paths, IDs, or literal templates.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.