Standards Map
Produce a dated report that answers:
- What does this project look like against the latest TheFocus.AI standards?
- Which best-practice guides apply, partially apply, or are N/A — and why?
- What are intentional product exceptions vs compliance gaps?
This skill is read-only by default. It does not edit the project. If the user
wants a migration plan or to apply fixes, hand off to standardize-project after
the report (or when they ask).
| Skill |
Job |
standards-map |
Latest standards → mapping report (this skill) |
standardize-project |
Audit + migration plan → optional apply |
setup-project |
Greenfield scaffold |
Target project
Resolve the target before reading anything else:
- Path the user named (absolute or relative).
- Else the current working directory if it looks like a project (has
AGENTS.md,
mise.toml, package.json, or .git).
- Else ask and stop.
Use explicit paths for every read. Never write into the standards repo by
accident when the target is a sibling project.
Source of truth — latest standards
Standards live in The-Focus-AI/standards. Always pin the report to a concrete
revision (commit SHA + date), not "whatever I remember."
Resolve the standards tree (in order)
STANDARDS_REPO env if set and the path contains best-practices/GDE-009-technology-defaults.md.
- Sibling / known clones (first hit wins):
../standards relative to the target
../../standards if target is deeper
$HOME/The-Focus-AI/standards
- Any path the user named for standards
- GitHub (latest
main) when no local clone is usable:
- Prefer
gh api repos/The-Focus-AI/standards/commits/main --jq .sha for the SHA
- Fetch files with
gh api / gh browse raw, or a shallow clone into a temp dir:
git clone --depth 1 https://github.com/The-Focus-AI/standards.git <tmpdir>
- If the network/auth fails, say so and stop — do not invent standards from
model memory.
Record in the report:
- Absolute path used (or
github:The-Focus-AI/standards@<sha>)
- Commit SHA and commit date when available
- Whether the clone might be stale relative to origin (optional:
git -C <standards> fetch --dry-run / rev-parse HEAD vs origin/main)
Read these from the resolved standards tree
Required:
AGENTS.md (root navigation / audit order)
best-practices/GDE-009-technology-defaults.md — mise, tasks, pnpm/TS defaults, fnox, skills install
best-practices/GDE-008-skills.md — canonical skill set and planning workflow
STD-007 — secrets and credentials; best-practices/GDE-003-fnox-secrets.md for the playbook
STD-008 — deployment; best-practices/GDE-006-local-environment.md for local setup
best-practices/GDE-007-pi-extensions.md
- Repository layout has no standard yet — see
reports/NOTE-005-2026-07-25-standards-gap-register.md
- Default project template under the standards repo (
templates / default-project)
— reference for expected files only
- Root
skills-lock.json — canonical skill names/hashes for diffing
Conditionally (after product shape is known):
| If the project looks like… |
Also read |
| Vercel / Next / preview deploys |
best-practices/GDE-010-vercel-deployment.md |
| Cloud Run / App Engine / gcloud |
best-practices/GDE-005-gcp-deployment.md |
| Gaia / habitats / GCE agent fleet |
best-practices/GDE-004-gce-gaia-runtime.md |
| Clerk / user auth |
best-practices/GDE-002-clerk.md |
| A2A / MCP agent service |
best-practices/GDE-001-a2a-agent.md |
Do not skip the conditional list: the report must still name those guides under
"N/A" when they do not apply, with one-line reasons.
Inspect the target project
Follow the standards audit order, adapted for a map (not a migration plan):
- Agent instructions —
AGENTS.md, CLAUDE.md, .cursor/rules, equivalents.
- Tooling —
mise.toml, package manager files, lockfiles, scripts/tasks.
- Secrets —
fnox.toml, .fnox/ presence (not contents), .env* risk, gitignore.
- pi —
.pi/settings.json, required packages vs pi-extensions.md.
- Skills —
skills-lock.json vs standards lock / skills.md (missing, deprecated
to-prd/to-issues, title-case keys, wrong sources).
- Workflow — README,
docs/agents/issue-workflow.md, tracker, wayfinder docs.
- Deploy shape — Dockerfile, Vercel, GH Actions, Pages, Cloud Run, none.
- Product stack — language, build vs no-build, auth, database, hosting.
- Git hygiene —
.gitignore, committed secrets risk, generated dirs.
Capture concrete evidence (task names, file paths, skill counts). Prefer
mise tasks, reading files, and lockfile keys over guessing.
Never print secret values. Key names only.
Classify every finding
Use these buckets so the report does not confuse product law with tech debt:
| Bucket |
Meaning |
| Meets |
Implements the standard as written |
| Exception |
Deliberate product choice documented (e.g. vanilla JS / no build) — not a bug |
| Soft gap |
Partial / shared vault / docs only — should improve but not blocking |
| Gap |
Standard expects it; missing or wrong without a documented exception |
| N/A |
Guide or rule does not apply to this product shape |
When project AGENTS.md conflicts with standards defaults, name the conflict —
do not silently pick standards over product law. Exceptions that are written down
belong in Exception; silent drift belongs in Gap.
Write the report
Path
Prefer, under the target project:
reports/YYYY-MM-DD-standards-map.md
Use today's real date. Create reports/ if needed.
If the user asked for stdout-only or a different path, honor that, but still offer
to write the file.
Required sections
Use this skeleton (adapt tables; do not drop sections):
---
title: "Standards map: <project-name>"
date: YYYY-MM-DD
project: <path or github slug>
standards_source: <path or github:The-Focus-AI/standards@sha>
standards_sha: <full or short sha>
standards_date: <commit date if known>
mode: map # not a migration
---
# Standards map — <project-name>
## Product in one line
| | |
| --- | --- |
| What | … |
| Stack | … |
| Host | … |
| Backend | … / none |
| Org remote | … |
## Standards revision
- Source: …
- SHA: …
- Note if local clone may lag `origin/main`.
## Scorecard
| Area | Grade or status | Notes |
| --- | --- | --- |
| Tooling (mise/pnpm) | | |
| Secrets (fnox) | | |
| Agent instructions | | |
| Skills lock | | |
| pi | | |
| Workflow docs | | |
| Deploy | | |
| App stack vs defaults | | |
## Standards surface → project files
| Standards concept | Expected | Project artifact | Status |
| --- | --- | --- | --- |
| Project agent guide | AGENTS.md | … | Meets / Gap / … |
| Tooling / tasks | mise.toml | … | |
| Secrets | fnox.toml | … | |
| Skills lock | skills-lock.json | … | |
| Issue workflow | docs/agents/issue-workflow.md | … | |
| pi config | .pi/settings.json | … | |
| README | human entry | … | |
| … | | | |
### Required mise tasks
| Task | Expected role | Project behavior | Status |
| --- | --- | --- | --- |
| install | deps + skills | | |
| dev | run app / checks | | |
| lint | quality | | |
| test | automated | | |
| deploy | ship | | |
| setup / secrets:* | onboarding | | |
## Guide-by-guide applicability
### Always / core for this product
For each applicable guide (`best-practices/GDE-009-technology-defaults.md`, `skills.md`, `security.md`,
`pi-extensions.md`, `organization.md`, relevant parts of `deployment.md`):
- What the guide requires
- How this project maps (paths, tasks, evidence)
- Exceptions or soft gaps
### Conditionally applicable
Guides that only matter for certain shapes (or partial sections of deployment.md).
### Does not apply today
| Guide | Why N/A | Would apply if… |
| --- | --- | --- |
| vercel-deployment.md | | |
| gcp-deployment.md | | |
| gce-gaia-runtime.md | | |
| clerk.md | | |
| a2a-agent.md | | |
## Skills map
| Category | In standards lock | In project lock | Notes |
| --- | --- | --- | --- |
| Focus-owned | … | … | missing / extra / wrong source |
| Third-party | … | … | |
| mattpocock set | … | … | deprecated names? |
Call out title-case lock keys, `to-prd` / `to-issues`, and skills not from
`The-Focus-AI/standards` when they should be.
## Architecture vs default stack
| Default standard | This project | Treatment |
| --- | --- | --- |
| TypeScript | | Meets / Exception / Gap |
| Build pipeline | | |
| Neon / Postgres | | |
| Clerk | | |
| Vercel (if web app) | | |
## How guides apply by kind of work
Short routing table: work type → open which guide/skill first.
## Soft gaps and gaps
Prioritized list. Each item: finding, standards file, severity, suggested next step
(`standardize-project`, manual, ignore as exception).
## Mental model
Optional one-diagram summary: standards shell vs product exception zone vs
N/A stack guides.
## Recommended next steps
1–5 bullets. If migration is warranted, point to `standardize-project` — do not
start migrating inside this skill unless the user explicitly asked to apply fixes.
Deliver
- Write the markdown file under the target project's
reports/.
- Summarize in chat: product one-liner, scorecard highlights, top gaps/exceptions,
path to the report, standards SHA used.
- Ask whether they want
standardize-project to close gaps (only if gaps exist).
Optional modes (if the user asks)
| Mode |
Behavior |
| Default / map |
Report only (above) |
| Diff skills |
Emphasize lockfile key/source/hash drift vs standards |
| Guides only |
Applicability matrix without full file inventory |
| Compare two projects |
Two targets, shared standards SHA, side-by-side scorecard |
Still write a dated report unless they forbid files.
Pitfalls
- Do not invent standards. Always resolve a real tree + SHA. Model memory is not
the org source of truth.
- Do not treat exceptions as gaps. Documented vanilla-JS / no-build / static Pages
is product law when
AGENTS.md says so.
- Do not apply migrations here. That is
standardize-project. Mixing jobs
confuses reviewers and rewrites repos during a "report" request.
- Do not dump secret values. Names only; skip
.fnox/env contents.
- Do not mark Vercel/Clerk/GCP as gaps for a client-only static PWA — mark N/A.
- Stale local standards clone. Prefer noting
HEAD vs origin/main when
networked; if you cannot check, say the report is against the local tree only.
- Wrong repo edits. Target path must stay explicit when standards and project
sit side by side under
The-Focus-AI/.
1---2name: standards-map3description: Look up the latest TheFocus.AI standards, inspect the current (or named) project, and write a dated mapping report: how the project implements each standard, which best-practice guides apply or are N/A, intentional product exceptions, and soft gaps. Read-only by default — does not migrate the project. Use when asked how a project maps to standards, which guides apply, for a standards compliance report, or "standards map". Triggers on: "standards map", "map to standards", "how do we map to standards", "which standards apply", "standards report", "guide applicability", "does this project follow standards", "standards coverage".4---56# Standards Map78Produce a **dated report** that answers:9101. What does this project look like against the **latest** TheFocus.AI standards?112. Which **best-practice guides** apply, partially apply, or are N/A — and why?123. What are **intentional product exceptions** vs **compliance gaps**?1314This skill is **read-only by default**. It does not edit the project. If the user15wants a migration plan or to apply fixes, hand off to `standardize-project` after16the report (or when they ask).1718| Skill | Job |19| --- | --- |20| `standards-map` | Latest standards → mapping report (this skill) |21| `standardize-project` | Audit + migration plan → optional apply |22| `setup-project` | Greenfield scaffold |2324## Target project2526Resolve the target before reading anything else:27281. Path the user named (absolute or relative).292. Else the current working directory if it looks like a project (has `AGENTS.md`,30 `mise.toml`, `package.json`, or `.git`).313. Else ask and stop.3233Use **explicit paths** for every read. Never write into the standards repo by34accident when the target is a sibling project.3536## Source of truth — latest standards3738Standards live in **`The-Focus-AI/standards`**. Always pin the report to a concrete39revision (commit SHA + date), not "whatever I remember."4041### Resolve the standards tree (in order)42431. **`STANDARDS_REPO` env** if set and the path contains `best-practices/GDE-009-technology-defaults.md`.442. **Sibling / known clones** (first hit wins):45 - `../standards` relative to the target46 - `../../standards` if target is deeper47 - `$HOME/The-Focus-AI/standards`48 - Any path the user named for standards493. **GitHub (latest `main`)** when no local clone is usable:50 - Prefer `gh api repos/The-Focus-AI/standards/commits/main --jq .sha` for the SHA51 - Fetch files with `gh api` / `gh browse` raw, or a shallow clone into a temp dir:52 `git clone --depth 1 https://github.com/The-Focus-AI/standards.git <tmpdir>`53 - If the network/auth fails, say so and stop — do **not** invent standards from54 model memory.5556Record in the report:5758- Absolute path used (or `github:The-Focus-AI/standards@<sha>`)59- Commit SHA and commit date when available60- Whether the clone might be stale relative to origin (optional:61 `git -C <standards> fetch --dry-run` / `rev-parse HEAD` vs `origin/main`)6263### Read these from the resolved standards tree6465Required:6667- `AGENTS.md` (root navigation / audit order)68- `best-practices/GDE-009-technology-defaults.md` — mise, tasks, pnpm/TS defaults, fnox, skills install69- `best-practices/GDE-008-skills.md` — canonical skill set and planning workflow70- `STD-007` — secrets and credentials; `best-practices/GDE-003-fnox-secrets.md` for the playbook71- `STD-008` — deployment; `best-practices/GDE-006-local-environment.md` for local setup72- `best-practices/GDE-007-pi-extensions.md`73- Repository layout has no standard yet — see `reports/NOTE-005-2026-07-25-standards-gap-register.md`74- Default project template under the standards repo (`templates` / `default-project`)75 — reference for expected files only76- Root `skills-lock.json` — canonical skill names/hashes for diffing7778Conditionally (after product shape is known):7980| If the project looks like… | Also read |81| --- | --- |82| Vercel / Next / preview deploys | `best-practices/GDE-010-vercel-deployment.md` |83| Cloud Run / App Engine / gcloud | `best-practices/GDE-005-gcp-deployment.md` |84| Gaia / habitats / GCE agent fleet | `best-practices/GDE-004-gce-gaia-runtime.md` |85| Clerk / user auth | `best-practices/GDE-002-clerk.md` |86| A2A / MCP agent service | `best-practices/GDE-001-a2a-agent.md` |8788Do not skip the conditional list: the report must still **name** those guides under89"N/A" when they do not apply, with one-line reasons.9091## Inspect the target project9293Follow the standards audit order, adapted for a **map** (not a migration plan):94951. **Agent instructions** — `AGENTS.md`, `CLAUDE.md`, `.cursor/rules`, equivalents.962. **Tooling** — `mise.toml`, package manager files, lockfiles, scripts/tasks.973. **Secrets** — `fnox.toml`, `.fnox/` presence (not contents), `.env*` risk, gitignore.984. **pi** — `.pi/settings.json`, required packages vs `pi-extensions.md`.995. **Skills** — `skills-lock.json` vs standards lock / `skills.md` (missing, deprecated100 `to-prd`/`to-issues`, title-case keys, wrong sources).1016. **Workflow** — README, `docs/agents/issue-workflow.md`, tracker, wayfinder docs.1027. **Deploy shape** — Dockerfile, Vercel, GH Actions, Pages, Cloud Run, none.1038. **Product stack** — language, build vs no-build, auth, database, hosting.1049. **Git hygiene** — `.gitignore`, committed secrets risk, generated dirs.105106Capture concrete evidence (task names, file paths, skill counts). Prefer107`mise tasks`, reading files, and lockfile keys over guessing.108109**Never print secret values.** Key *names* only.110111## Classify every finding112113Use these buckets so the report does not confuse product law with tech debt:114115| Bucket | Meaning |116| --- | --- |117| **Meets** | Implements the standard as written |118| **Exception** | Deliberate product choice documented (e.g. vanilla JS / no build) — not a bug |119| **Soft gap** | Partial / shared vault / docs only — should improve but not blocking |120| **Gap** | Standard expects it; missing or wrong without a documented exception |121| **N/A** | Guide or rule does not apply to this product shape |122123When project `AGENTS.md` conflicts with standards defaults, **name the conflict** —124do not silently pick standards over product law. Exceptions that are written down125belong in **Exception**; silent drift belongs in **Gap**.126127## Write the report128129### Path130131Prefer, under the **target** project:132133```text134reports/YYYY-MM-DD-standards-map.md135```136137Use today's real date. Create `reports/` if needed.138139If the user asked for stdout-only or a different path, honor that, but still offer140to write the file.141142### Required sections143144Use this skeleton (adapt tables; do not drop sections):145146````markdown147---148title: "Standards map: <project-name>"149date: YYYY-MM-DD150project: <path or github slug>151standards_source: <path or github:The-Focus-AI/standards@sha>152standards_sha: <full or short sha>153standards_date: <commit date if known>154mode: map # not a migration155---156157# Standards map — <project-name>158159## Product in one line160161| | |162| --- | --- |163| What | … |164| Stack | … |165| Host | … |166| Backend | … / none |167| Org remote | … |168169## Standards revision170171- Source: …172- SHA: …173- Note if local clone may lag `origin/main`.174175## Scorecard176177| Area | Grade or status | Notes |178| --- | --- | --- |179| Tooling (mise/pnpm) | | |180| Secrets (fnox) | | |181| Agent instructions | | |182| Skills lock | | |183| pi | | |184| Workflow docs | | |185| Deploy | | |186| App stack vs defaults | | |187188## Standards surface → project files189190| Standards concept | Expected | Project artifact | Status |191| --- | --- | --- | --- |192| Project agent guide | AGENTS.md | … | Meets / Gap / … |193| Tooling / tasks | mise.toml | … | |194| Secrets | fnox.toml | … | |195| Skills lock | skills-lock.json | … | |196| Issue workflow | docs/agents/issue-workflow.md | … | |197| pi config | .pi/settings.json | … | |198| README | human entry | … | |199| … | | | |200201### Required mise tasks202203| Task | Expected role | Project behavior | Status |204| --- | --- | --- | --- |205| install | deps + skills | | |206| dev | run app / checks | | |207| lint | quality | | |208| test | automated | | |209| deploy | ship | | |210| setup / secrets:* | onboarding | | |211212## Guide-by-guide applicability213214### Always / core for this product215216For each applicable guide (`best-practices/GDE-009-technology-defaults.md`, `skills.md`, `security.md`,217`pi-extensions.md`, `organization.md`, relevant parts of `deployment.md`):218219- What the guide requires220- How this project maps (paths, tasks, evidence)221- Exceptions or soft gaps222223### Conditionally applicable224225Guides that only matter for certain shapes (or partial sections of deployment.md).226227### Does not apply today228229| Guide | Why N/A | Would apply if… |230| --- | --- | --- |231| vercel-deployment.md | | |232| gcp-deployment.md | | |233| gce-gaia-runtime.md | | |234| clerk.md | | |235| a2a-agent.md | | |236237## Skills map238239| Category | In standards lock | In project lock | Notes |240| --- | --- | --- | --- |241| Focus-owned | … | … | missing / extra / wrong source |242| Third-party | … | … | |243| mattpocock set | … | … | deprecated names? |244245Call out title-case lock keys, `to-prd` / `to-issues`, and skills not from246`The-Focus-AI/standards` when they should be.247248## Architecture vs default stack249250| Default standard | This project | Treatment |251| --- | --- | --- |252| TypeScript | | Meets / Exception / Gap |253| Build pipeline | | |254| Neon / Postgres | | |255| Clerk | | |256| Vercel (if web app) | | |257258## How guides apply by kind of work259260Short routing table: work type → open which guide/skill first.261262## Soft gaps and gaps263264Prioritized list. Each item: finding, standards file, severity, suggested next step265(`standardize-project`, manual, ignore as exception).266267## Mental model268269Optional one-diagram summary: standards shell vs product exception zone vs270N/A stack guides.271272## Recommended next steps2732741–5 bullets. If migration is warranted, point to `standardize-project` — do not275start migrating inside this skill unless the user explicitly asked to apply fixes.276````277278## Deliver2792801. Write the markdown file under the target project's `reports/`.2812. Summarize in chat: product one-liner, scorecard highlights, top gaps/exceptions,282 path to the report, standards SHA used.2833. Ask whether they want `standardize-project` to close gaps (only if gaps exist).284285## Optional modes (if the user asks)286287| Mode | Behavior |288| --- | --- |289| **Default / map** | Report only (above) |290| **Diff skills** | Emphasize lockfile key/source/hash drift vs standards |291| **Guides only** | Applicability matrix without full file inventory |292| **Compare two projects** | Two targets, shared standards SHA, side-by-side scorecard |293294Still write a dated report unless they forbid files.295296## Pitfalls297298- **Do not invent standards.** Always resolve a real tree + SHA. Model memory is not299 the org source of truth.300- **Do not treat exceptions as gaps.** Documented vanilla-JS / no-build / static Pages301 is product law when `AGENTS.md` says so.302- **Do not apply migrations here.** That is `standardize-project`. Mixing jobs303 confuses reviewers and rewrites repos during a "report" request.304- **Do not dump secret values.** Names only; skip `.fnox/env` contents.305- **Do not mark Vercel/Clerk/GCP as gaps** for a client-only static PWA — mark N/A.306- **Stale local standards clone.** Prefer noting `HEAD` vs `origin/main` when307 networked; if you cannot check, say the report is against the local tree only.308- **Wrong repo edits.** Target path must stay explicit when standards and project309 sit side by side under `The-Focus-AI/`.