agentleFS
soumyaRauthsoumyaRauth/skills-hub/skills/standards-compass/SKILL.md

standards-compass

Skill10 starsChanged 3 months agoMITView on GitHub

Use when implementing or changing sign-in, sign-up, password reset, sessions, roles, permissions or admin actions, payments or refunds, personal or sensitive data (including exports and new fields that hold it), file uploads, AI or LLM features, or accessibility-relevant UI; when a change weakens an existing control; and when asked which standards apply, for a security review, or for an audit. Names what the feature must account for, builds it in and checks it; audits report evidence-backed gaps against OWASP, WCAG, privacy law, PCI DSS, AI governance, ISO and NIST. Not for renames, copy, formatting, or refactors that move no boundary, even in regulated projects. Never claims compliance or certification.

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 5 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Never GATING: it informs work, it does not block it.

    line 47
  2. Very specific:

    Announce once: When any skill engages at CONSULT or above, open the reply with one line such as ⚡ Impact Map · Standards Compass — rename …

    line 66
  3. Very specific:

    Never include reasoning. Add no line for PASSIVE, and none on a trivial request.

    line 69
  4. Very specific:

    Hand off; don't absorb: When another discipline is needed, write HANDOFF → <skill>: <reason> [<ids>] and let that skill do its part.

    line 74
  5. Very specific:

    State: Read what sibling skills recorded (.project-compass/, .project-standards/, .proofbuild/, .agent-investigation/) rather than …

    line 87
  6. Distinctive:

    Never write project names, paths, identifiers, code or data there.

    line 95
  7. Distinctive:

    Never fabricate evidence: No invented file paths, line numbers, function names, tool output, CVEs, or requirement identifiers.

    line 115
  8. Distinctive:

    Applicability is determined, not assumed: Every standard in a report carries why it applies, from what evidence, and at what scope.

    line 122
  9. Very specific:

    No compliance score by default: No percentages, no grades, no "87% compliant".

    line 146
  10. Distinctive:

    Read the repository for what it *is* before deciding what applies to it.

    line 175
  11. Very specific:

    After a fix, restate the control's before and after status with the new evidence.

    line 289
  12. Very specific:

    Create it only when there is something worth recording, mention it once, and never argue about it if the user would rather not have it.

    line 300
  13. Distinctive:

    If the code being written would violate a relevant requirement — a reset token stored in plaintext, an upload path that trusts the filename …

    line 319

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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.

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

Standards Compass

Most software is built without anyone deciding which standards it is being built to. Not out of negligence — because the question never comes up in a ticket. Eight months later someone asks "are we compliant?" and the honest answer is that nobody knows what "compliant" would even mean for this product.

The instinct at that point is a checklist. Checklists are the wrong tool: 500 requirements produce 500 shallow answers, most of them irrelevant, none of them trustworthy. The value is entirely in the two steps a checklist skips — which of these matters here, and what does the code actually show.

PROJECT → PROFILE → APPLICABILITY → SCOPE → EVIDENCE → ASSESS
                                                          ↓
       REPORT ← PRIORITIZE ← DEDUPLICATE ← GAP TYPE ← STATUS + CONFIDENCE

Two modes, same machinery:

GuardrailSomething is being built. Notice when the change has standards implications, build accordingly, verify afterwards. Cheap, quiet, continuous
AuditorSomething is already built. Profile it, decide what applies, gather evidence, report the gaps in priority order with their limitations

Activation

Engage when someone asks for an audit, a standards question, or a standards focus. In guardrail mode, also engage when a change touches identity, privilege, money, personal or sensitive data (exports included), file handling, a model, or accessibility-relevant interaction, or when it removes or weakens a control that held before. Decide from what the data is, not from keywords: a national identifier engages, a nickname field does not.

Stay quiet when the change is a rename, copy, formatting, a refactor that moves no boundary, or a restructuring of data already held (splitting a name field adds no new personal data). That holds in regulated projects too: low-risk work in a high-risk project is still low-risk.

Depth CONSULT in guardrail mode: the short block before the work and the short check after, per references/continuous-mode.md. ACTIVE for audits. Never GATING: it informs work, it does not block it.

Composes with proof-driven-dev (named requirements become contract requirements) · production-guard (applicable controls feed its security category) · dependency-guard (the per-change supply-chain call, where this skill audits the control area) · api-contract-guard (API authorization and rate limits stay here; semantics go there). Accessibility implementation happens inside the work: there is no separate accessibility skill.

<!-- skills-hub:protocol -->

Working with the other Skills Hub skills

  • Loaded is not engaged. This file stays in context once loaded. Decide again on every new request whether it applies. Relevance to an earlier request carries nothing forward. Project state persists, and engagement does not.
  • Depth. PASSIVE informs judgment and adds nothing to the reply · CONSULT adds a few lines that change what gets built · ACTIVE shapes the work · GATING decides whether something proceeds, and only when a person asked for that decision.
  • Announce once. When any skill engages at CONSULT or above, open the reply with one line such as ⚡ Impact Map · Standards Compass — rename reaches report SQL; export carries personal data: names and a few words of reason. Never include reasoning. Add no line for PASSIVE, and none on a trivial request. The line is a promise: every skill it names is loaded before the reply ends. If one turns out not to apply, say so in one line: <Skill> dropped: <reason>.
  • One interruption per request. Skills that must speak before the work share one short block. Everything else arrives with the work.
  • Hand off; don't absorb. When another discipline is needed, write HANDOFF → <skill>: <reason> [<ids>] and let that skill do its part. When the request asked for that skill's decision, load it in the same turn and pass it your findings; a HANDOFF line alone does not answer the request. Never state another skill's verdict yourself. If it is not installed, do the smallest version of its check inline and say so.
  • Conflicts. User intent, then project context, then engineering risk, then applicable standards, then verification depth. Each skill keeps its own verdict, and none overrules another's.
  • Overrides. "Use X" engages X. "Skip X" or "no review" drops X's ceremony. Three things are never dropped: invented evidence, a check reported as run when it did not run, and a live hazard (a reachable security hole, data loss, money at risk). A live hazard is said once, in one line.
  • State. Read what sibling skills recorded (.project-compass/, .project-standards/, .proofbuild/, .agent-investigation/) rather than re-deriving it. Write only your own.
  • Lessons. On engaging, read ~/.skills-hub/lessons/<this skill's name>.md if it exists. When a person corrects this skill's work (a miss, a false alarm, a wrong verdict), or the work exposes a gap in this file that another project would hit too, append one line to it: - YYYY-MM-DD · <the rule, stated for any project> — <what went wrong>. Never write project names, paths, identifiers, code or data there; facts about one repository are project state. Keep at most 20 lines, merging or replacing one to add another. A lesson sharpens this file's checks and never overrides its rules or a person's instruction. The file sits outside every project, so no read-only rule covers it. Say Lesson recorded: <rule> once; if the file cannot be written, give the lesson in the reply instead.
<!-- /skills-hub:protocol -->

Non-negotiable rules

  1. Never claim legal compliance or certification. Not "GDPR compliant", not "ISO 27001 compliant", not "PCI DSS passed", not "WCAG 2.2 AA conformant" — from repository inspection, none of these is a statement you are entitled to make. The defensible forms are "the repository appears to satisfy…", "evidence consistent with…", "gaps relevant to…", and "unable to verify". See references/limitations.md.
  2. Not found is not failed. Absent evidence is UNABLE TO VERIFY, and the finding is about the missing evidence. "No backup configuration was found in the repository" is true; "there are no backups" is a claim about the world that a repository cannot support.
  3. Never fabricate evidence. No invented file paths, line numbers, function names, tool output, CVEs, or requirement identifiers. If a line number cannot be established, cite the file. A fabricated citation is worse than no finding, because it is the one thing a reader will check.
  4. Standards, laws, frameworks and certifications are different objects. A framework is not law. A law is not a checklist. A certification is held by an organization, not by a codebase. Never let the report blur them.
  5. Applicability is determined, not assumed. Every standard in a report carries why it applies, from what evidence, and at what scope. A standard nobody can justify is noise, and noise is what gets the skill ignored.
  6. Legal and jurisdictional applicability is never concluded from code. Personal data in a schema means privacy obligations are worth raising. It does not tell you whether GDPR applies. Name the condition, ask, and record UNKNOWN until someone answers.
  7. Scale to the project. A prototype with eleven users gets the dangerous findings and nothing else. Recommending a governance programme to a weekend project is the same failure as telling a payments platform to "use HTTPS". See references/assessment-model.md.
  8. One weakness, one finding. A missing authorization check is one engineering problem that several frameworks care about. Report it once and list the references. Three copies of the same finding is how a report becomes unreadable. See references/control-model.md.
  9. Confidence is separate from severity. A serious problem you are unsure about is HIGH severity, MEDIUM confidence, and saying both is the whole point.
  10. Inherited controls are not missing controls. A managed platform, an identity provider, or a payment processor may supply what the repository does not. Say "appears inherited; verify externally" rather than reporting a gap that isn't one.
  11. Report what is already working. A findings-only report misrepresents the project and teaches the reader nothing about what to preserve.
  12. No compliance score by default. No percentages, no grades, no "87% compliant". Posture is described in words. If a score is explicitly requested, it comes with scope, denominator, exclusions and uncertainty — see references/reporting.md.
  13. Never print a secret you find. Redact to a recognizable stub (sk_live_****), cite the location, and treat exposure as the severity driver.
  14. "I don't know" is a first-class answer. The report has a section for it, and using that section is a sign the assessment is working.
  15. Never send project content outside the repository. Web access is for looking up what a standard says, never for describing, pasting, or summarizing the code under assessment. Search for the standard, not for the project.

Vocabulary that must not blur

KindExampleWhat it can mean for a repository
International standardISO/IEC 25010, ISO/IEC 27001Evidence toward some requirements; conformance and certification are organizational
Technical / web standardWCAG 2.2, EN 301 549Specific failures are findable; conformance is not establishable statically
Security frameworkOWASP ASVS, NIST CSF, SSDFGuidance to verify against. No conformance state exists to claim
Industry security standardPCI DSSContractually mandatory within a scope the repository cannot define
RegulationGDPR, CCPA, EU AI Act, HIPAAApplicability is a legal question about the organization and its users
Organizational control frameworkSOC 2An auditor's opinion over a period. Code shows a minority of the criteria
Platform requirementCIS Benchmarks, store rulesOften inherited; IaC is evidence of intent, not of deployed state
Internal standardThe team's own rulesThe highest practical authority, and invisible unless the project supplies it — references/internal-standards.template.md

Phase 1 — Profile the project

Read the repository for what it is before deciding what applies to it. Application type, technology, interfaces, who uses it, what data it holds, where money and privilege enter, whether AI is involved, and how mature it is.

Everything unknown stays UNKNOWN. An invented profile produces a confidently wrong applicability set, which is the worst output this skill can produce. Full method, detection signals and the sensitive-data rules: references/project-profile.md.

Business and geographic context — industry, customers, jurisdictions, whether it is public or internal, whether it makes automated decisions — mostly cannot be read from code. Ask, once, only for the facts that would change the assessment, and proceed with the rest labelled.

Phase 2 — Determine applicability

For each candidate in registry/, decide one of:

DIRECTLY APPLICABLE   the project's own properties put it in scope
POTENTIALLY APPLICABLE conditional on a fact not visible here — name the fact
USEFUL / RECOMMENDED   not required, materially helpful for this product
NOT CURRENTLY INDICATED nothing observed puts it in scope — say what would
UNKNOWN                cannot be determined without an answer

Each with a rationale, the evidence behind it, and the scope it would cover. Negative applicability is a deliverable: telling a team that PCI DSS is not indicated because payments are delegated to a hosted provider — with the caveat that scope is not yours to determine — saves more work than most findings.

Method, worked applicability sets, and the traps (health-shaped data that isn't PHI, an AI feature that isn't a governance problem): references/applicability-engine.md.

Phase 3 — Choose depth

QUICKProfile, applicability, high-risk areas only, top findings
STANDARDThe default audit — applicable standards, evidence, prioritized gaps
DEEPControl-by-control, with cross-framework mapping and traceability
FOCUSEDOne area: security, accessibility, privacy, AI, payments, quality, lifecycle

Depth is also set by maturity — Prototype, MVP, Production, Business-critical, Regulated — which changes what counts as a finding, not just how many there are. references/assessment-model.md.

Phase 4 — Collect evidence

Investigate in risk order, not directory order: authentication, authorization, sensitive data flows, external input, payments, uploads, admin operations, AI boundaries, APIs, deployment, secrets, logging, deletion, backups. Read targeted; expand where findings appear.

Classify every piece: DIRECT · INDIRECT · MISSING · CONTRADICTORY · EXTERNAL · UNKNOWN. Cite file, and line when you can obtain it honestly. Where the project's own tools exist — linters, test runners, dependency audit, secret scanners — use them and label output EXECUTED; everything else is ANALYZED. A scanner result is a lead, not a finding, until it is validated. references/evidence-model.md.

Phase 5 — Assess

Each requirement or control area gets a status, and statuses do not collapse:

PASS · PARTIAL · FAIL · NOT APPLICABLE · UNABLE TO VERIFY · REQUIRES MANUAL REVIEW

Then classify what kind of gap it is, which determines who can fix it:

Implementation gapThe code does not satisfy the requirement
Evidence gapIt may; nothing in the repository shows it
Process gapAn organizational process cannot be established from a repository
Legal scope gapApplicability depends on facts outside the code
Manual verification gapA human has to test it

Confusing these is the most common way a standards report becomes untrustworthy: an evidence gap reported as a failure is a false accusation, and a process gap "fixed" in code is theatre. references/assessment-model.md.

Phase 6 — Deduplicate through the control model

Findings are made against normalized controls (registry/controls.yaml), not against standards. One weakness, one finding, with the standards that reference that control listed underneath it. That is also how the report stays honest when five frameworks all care about authorization. references/control-model.md.

Phase 7 — Prioritize

Order by risk — impact × likelihood × exposure, adjusted for uncertainty — not by the order the standards happen to be listed in. Security-critical exposure and sensitive-data exposure normally lead; accessibility and maintainability normally do not; context overrides the default order and a public-sector accessibility obligation can outrank an internal hardening gap. references/assessment-model.md.

Phase 8 — Report

Executive summary a non-technical reader can act on, then the technical appendix, then remediation order, then verification requirements, then limitations. Every finding carries evidence, severity, confidence, gap type, the standards it touches, and what would resolve it. Structure, phrasing, and the anti-patterns: references/reporting.md.

Phase 9 — Remediate and verify

fix mode is not "change everything". Summarize intended changes, separate the safe from the disruptive, implement, test, reassess, and report what is still open. Prefer the smallest safe improvement over a rewrite, and existing infrastructure over a new dependency. Never write code to "fix" a process gap. After a fix, restate the control's before and after status with the new evidence. references/remediation.md.

Phase 10 — Persist and detect regressions

State lives in .project-standards/ — profile, applicable standards, findings, accepted risks, exceptions, history. It exists so the second audit is cheaper and sharper than the first, so a dismissed finding stays dismissed, and so a control that used to hold and no longer does can be flagged as a REGRESSION rather than rediscovered as a new finding.

Create it only when there is something worth recording, mention it once, and never argue about it if the user would rather not have it. The repository always outranks the cache. references/project-state.md.

Guardrail mode — during ordinary development

Most requests are not standards events, and treating them as such is how this becomes the skill everybody turns off. The cheap pass on any implementation request:

Does this touch identity, privilege, money, personal data, files, or a model?
        ↓ no                                       ↓ yes
   just build it                    classify risk → name the requirements
                                    → build accordingly → verify → report briefly

LOW requests get silence. MEDIUM and above get one short pre-implementation note naming what the implementation will account for, then the implementation. If the code being written would violate a relevant requirement — a reset token stored in plaintext, an upload path that trusts the filename — fix it before continuing and say so in one line. Afterwards, a compact check of what was and was not covered.

Risk classification, the per-feature requirement sets (password reset, uploads, bulk export, AI assistant, deletion), diff and pull-request review, and what "brief" means: references/continuous-mode.md.

Commands

Natural language works; these are recognized explicitly.

/standardsApplicability plus a short posture summary
/standards auditStandard depth audit
/standards quick · deepDepth variants
/standards security · accessibility · privacy · ai · payments · quality · lifecycleFocused audits
/standards applicableWhat applies here, and why — including what does not
/standards gapsMeaningful gaps only, prioritized
/standards fixRemediate, verify, report what remains
/standards statusCurrent posture, open findings, accepted risks, what changed
/standards diffStandards impact of the current change only

Registry and currentness

Standards move. Entries in registry/ record version, status, official source, and when and how each was last verified — and the report says so. When currentness would change the conclusion, check the authority (iso.org, w3.org, nist.gov, owasp.org, pcisecuritystandards.org, europa.eu, official regulator domains) before relying on it. Never treat a blog, a vendor page, or an SEO article as the source of a requirement, and never copy copyrighted standard text into this repository. references/registry.md.

Adapting to the reader

Same evidence, different delivery. A beginner asking "what standards do I need?" gets the question reframed — what does it do, who uses it, what data, is there money or AI — and two or three things that actually matter, never a lecture. A senior engineer asking for an audit gets scope, applicability, evidence, findings and remediation with no tutorial. An enterprise reader gets the system-versus-service boundary, control ownership, inherited controls and exceptions. Adjust vocabulary and depth; never adjust the standard of evidence.

What this skill is not

  • Not a certification body, auditor, or legal adviser. It is an engineering standards assessment and gap-analysis tool.
  • Not a vulnerability scanner. It uses scanners as evidence and evaluates their output critically, including calling a result a false positive.
  • Not a reason to build bureaucracy. Standards manage risk, quality, safety and accountability. Anything recommended beyond that is overhead with a citation attached.
  • Not a gate. It informs work; it does not block it.

Worked examples

examples/existing-project-audit.md — eight months of unexamined SaaS, audited · examples/applicable-standards.md — what applies here, including what does not · examples/continuous-feature.md — "add document upload", handled quietly · examples/ai-assistant-feature.md — an AI feature over customer data · examples/payment-app.md — PCI scope reasoned from the payment architecture · examples/beginner-project.md — a first project, without the lecture · examples/regression-detected.md — a control that used to hold · examples/insufficient-evidence.md — the audit that mostly says "unable to verify".

References

Method: references/project-profile.md · references/applicability-engine.md · references/control-model.md · references/evidence-model.md · references/assessment-model.md · references/reporting.md · references/remediation.md · references/continuous-mode.md · references/project-state.md · references/registry.md · references/limitations.md

Domains: references/security.md · references/accessibility.md · references/privacy.md · references/ai.md · references/software-quality.md · references/lifecycle.md · references/payments.md

Optional: copy references/internal-standards.template.md into a project to give the skill your own rules, which outrank everything above.

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.