{
  "notice": "Demo catalogue. These entries were written to prove the format; they are not an exhaustive or endorsed list, and their review dates are sample records.",
  "demo": true,
  "catalogue_date": "2026-03-01",
  "schema": "ai-field-manual/skills@1",
  "count": 13,
  "skills": [
    {
      "id": "cite-checked-summary",
      "code": "FM-01",
      "title": "Summarise a long document with checkable citations",
      "summary": "A part-by-part summary where every claim carries a short verbatim quote you can find in the source.",
      "outcome": "A one-page summary in which each claim points to a section and a quote, plus a list of what the summary leaves out.",
      "task": "understand",
      "category": "research",
      "level": "starter",
      "effort_minutes": {
        "setup": 5,
        "per_run": 25
      },
      "environments": [
        {
          "env": "chat",
          "support": "full"
        },
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "local",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "privacy"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.2",
        "reviewed_on": "2026-02-10",
        "review_due": false
      },
      "path": "skills/cite-checked-summary/",
      "demo": true
    },
    {
      "id": "meeting-decisions-actions",
      "code": "FM-02",
      "title": "Turn a meeting transcript into decisions and owned actions",
      "summary": "Three short lists from a transcript, with owners taken only from what was said and confirmed before sending.",
      "outcome": "A note with decisions, actions (owner and due date as stated) and open questions, confirmed by each owner.",
      "task": "understand",
      "category": "communication",
      "level": "starter",
      "effort_minutes": {
        "setup": 2,
        "per_run": 15
      },
      "environments": [
        {
          "env": "chat",
          "support": "full"
        },
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "flow",
          "support": "partial"
        },
        {
          "env": "local",
          "support": "partial"
        }
      ],
      "risks": [
        "people",
        "privacy"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.0",
        "reviewed_on": "2026-01-20",
        "review_due": false
      },
      "path": "skills/meeting-decisions-actions/",
      "demo": true
    },
    {
      "id": "invoice-fields-checked",
      "code": "FM-03",
      "title": "Extract invoice fields into a spreadsheet that checks itself",
      "summary": "Field extraction that returns empty instead of guessing, followed by arithmetic checks and a sampled human review.",
      "outcome": "One row per invoice with typed columns, a pass or fail flag from arithmetic checks, and a measured error rate.",
      "task": "extract",
      "category": "operations",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 45,
        "per_run": 10
      },
      "environments": [
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "flow",
          "support": "full"
        },
        {
          "env": "sheet",
          "support": "partial"
        },
        {
          "env": "chat",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "cost",
        "privacy"
      ],
      "status": {
        "state": "reviewed",
        "version": "2.0",
        "reviewed_on": "2026-02-02",
        "review_due": false
      },
      "path": "skills/invoice-fields-checked/",
      "demo": true
    },
    {
      "id": "eval-set-before-change",
      "code": "FM-04",
      "title": "Build a small evaluation set before you change a prompt",
      "summary": "Twenty to fifty saved cases with expected properties, run before and after every change, so improvements are measured, not felt.",
      "outcome": "A versioned file of test cases, a baseline score for the current prompt, and a per-case comparison for each change.",
      "task": "evaluate",
      "category": "engineering",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 90,
        "per_run": 15
      },
      "environments": [
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "agent",
          "support": "full"
        },
        {
          "env": "sheet",
          "support": "partial"
        },
        {
          "env": "chat",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "privacy"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.1",
        "reviewed_on": "2026-01-08",
        "review_due": false
      },
      "path": "skills/eval-set-before-change/",
      "demo": true
    },
    {
      "id": "blind-compare",
      "code": "FM-05",
      "title": "Compare two models or prompts blind on your own task",
      "summary": "Side-by-side outputs with hidden labels, scored on a short rubric, so the choice reflects your work rather than a reputation.",
      "outcome": "A tally of wins, losses and ties per criterion, and a decision with the tie rule written down in advance.",
      "task": "evaluate",
      "category": "research",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 30,
        "per_run": 40
      },
      "environments": [
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "sheet",
          "support": "full"
        },
        {
          "env": "chat",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "cost"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.0",
        "reviewed_on": "2025-12-01",
        "review_due": false
      },
      "path": "skills/blind-compare/",
      "demo": true
    },
    {
      "id": "redact-before-sharing",
      "code": "FM-06",
      "title": "Redact personal data before you share text with an assistant",
      "summary": "Consistent placeholders replace people and identifiers, the key stays with you, and a leftover search runs before anything is sent.",
      "outcome": "A redacted copy that keeps the meaning, a private key table that never leaves your machine, and a re-identified result.",
      "task": "protect",
      "category": "governance",
      "level": "starter",
      "effort_minutes": {
        "setup": 5,
        "per_run": 15
      },
      "environments": [
        {
          "env": "chat",
          "support": "full"
        },
        {
          "env": "local",
          "support": "full"
        },
        {
          "env": "api",
          "support": "partial"
        },
        {
          "env": "flow",
          "support": "partial"
        }
      ],
      "risks": [
        "privacy",
        "security"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.1",
        "reviewed_on": "2026-02-18",
        "review_due": false
      },
      "path": "skills/redact-before-sharing/",
      "demo": true
    },
    {
      "id": "agent-instruction-file",
      "code": "FM-07",
      "title": "Write a project instruction file for a coding agent",
      "summary": "A short file in the repository that tells an agent how to build, test and stay inside its boundaries, tested on a small task.",
      "outcome": "An instruction file with exact commands, boundaries, conventions and a definition of done, verified by one trial task.",
      "task": "build",
      "category": "engineering",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 40,
        "per_run": 20
      },
      "environments": [
        {
          "env": "agent",
          "support": "full"
        }
      ],
      "risks": [
        "accuracy",
        "security"
      ],
      "status": {
        "state": "needs-review",
        "version": "1.3",
        "reviewed_on": "2026-01-25",
        "review_due": false
      },
      "path": "skills/agent-instruction-file/",
      "demo": true
    },
    {
      "id": "tests-first-agent",
      "code": "FM-08",
      "title": "Have a coding agent implement against tests you wrote first",
      "summary": "You fix the behaviour in tests, the agent writes the code, and you check that it did not edit or weaken the tests.",
      "outcome": "A change whose behaviour is pinned by tests you own, with a diff you have read and a full suite run by you.",
      "task": "build",
      "category": "engineering",
      "level": "advanced",
      "effort_minutes": {
        "setup": 45,
        "per_run": 30
      },
      "environments": [
        {
          "env": "agent",
          "support": "full"
        },
        {
          "env": "api",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "security"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.0",
        "reviewed_on": "2026-02-24",
        "review_due": false
      },
      "path": "skills/tests-first-agent/",
      "demo": true
    },
    {
      "id": "read-only-review",
      "code": "FM-09",
      "title": "Review a pull request with an agent that cannot change anything",
      "summary": "A read-only agent proposes findings with file, line and failure scenario; a person verifies each one before it is posted.",
      "outcome": "A list of verified review findings, each with a concrete failure scenario, and a running count of false positives.",
      "task": "build",
      "category": "engineering",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 10,
        "per_run": 25
      },
      "environments": [
        {
          "env": "agent",
          "support": "full"
        },
        {
          "env": "chat",
          "support": "partial"
        }
      ],
      "risks": [
        "people",
        "security"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.1",
        "reviewed_on": "2025-08-20",
        "review_due": true
      },
      "path": "skills/read-only-review/",
      "demo": true
    },
    {
      "id": "ticket-triage-rubric",
      "code": "FM-10",
      "title": "Classify support tickets with a rubric and a human sample",
      "summary": "Written category definitions, an explicit unsure option routed to people, and a weekly audit of a random sample.",
      "outcome": "Tickets labelled with a category or unsure, a routing rule for unsure, and a weekly agreement rate between model and reviewer.",
      "task": "extract",
      "category": "operations",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 60,
        "per_run": 20
      },
      "environments": [
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "flow",
          "support": "full"
        },
        {
          "env": "sheet",
          "support": "partial"
        }
      ],
      "risks": [
        "people",
        "privacy"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.0",
        "reviewed_on": "2026-01-30",
        "review_due": false
      },
      "path": "skills/ticket-triage-rubric/",
      "demo": true
    },
    {
      "id": "glossary-translation",
      "code": "FM-11",
      "title": "Translate with a fixed glossary and a back-translation check",
      "summary": "Terms that must not drift are fixed up front, and a separate back-translation shows where meaning moved.",
      "outcome": "A translation that uses your agreed terms, a list of meaning differences found by back-translation, and a reviewer sign-off for public text.",
      "task": "write",
      "category": "communication",
      "level": "practitioner",
      "effort_minutes": {
        "setup": 30,
        "per_run": 30
      },
      "environments": [
        {
          "env": "chat",
          "support": "full"
        },
        {
          "env": "api",
          "support": "full"
        },
        {
          "env": "local",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "people"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.0",
        "reviewed_on": "2025-11-18",
        "review_due": false
      },
      "path": "skills/glossary-translation/",
      "demo": true
    },
    {
      "id": "local-model-drafts",
      "code": "FM-12",
      "title": "Draft sensitive text with a local model, offline",
      "summary": "A model that runs on your own machine, set up once and then used with the network off, for drafts that must not leave it.",
      "outcome": "A working local setup with a checked licence, verified offline operation, and a habit of deleting temporary files.",
      "task": "protect",
      "category": "governance",
      "level": "advanced",
      "effort_minutes": {
        "setup": 90,
        "per_run": 10
      },
      "environments": [
        {
          "env": "local",
          "support": "full"
        }
      ],
      "risks": [
        "accuracy",
        "rights",
        "security"
      ],
      "status": {
        "state": "needs-review",
        "version": "1.1",
        "reviewed_on": "2025-12-12",
        "review_due": false
      },
      "path": "skills/local-model-drafts/",
      "demo": true
    },
    {
      "id": "sheet-analysis-verified",
      "code": "FM-13",
      "title": "Analyse a spreadsheet with an assistant and verify every number",
      "summary": "The assistant proposes the method and the formulas; the spreadsheet computes the numbers; you cross-check totals.",
      "outcome": "A short analysis whose numbers come from formulas in your sheet, with a cross-check row and a labelled chart.",
      "task": "understand",
      "category": "data",
      "level": "starter",
      "effort_minutes": {
        "setup": 10,
        "per_run": 30
      },
      "environments": [
        {
          "env": "sheet",
          "support": "full"
        },
        {
          "env": "chat",
          "support": "partial"
        },
        {
          "env": "api",
          "support": "partial"
        }
      ],
      "risks": [
        "accuracy",
        "privacy"
      ],
      "status": {
        "state": "reviewed",
        "version": "1.0",
        "reviewed_on": "2026-02-14",
        "review_due": false
      },
      "path": "skills/sheet-analysis-verified/",
      "demo": true
    }
  ]
}
