skilldrop-cli 0.16.19 → 0.16.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/skilldrop.js +18 -4
- package/catalogue.json +2 -1
- package/model-routing.json +219 -215
- package/package.json +1 -1
- package/packs/ai-engineering/skills/agent-adoption-stage/evals/evals.json +28 -0
- package/packs/ai-engineering/skills/agent-adoption-stage/evals/files/2/agent-telemetry.csv +7 -0
- package/packs/ai-engineering/skills/agent-adoption-stage/evals/files/2/cto-offsite-memo.md +9 -0
- package/packs/ai-engineering/skills/agent-adoption-stage/evals/files/2/dev-survey-summary.md +9 -0
- package/packs/ai-engineering/skills/agent-adoption-stage/evals/files/2/engineering-policy.md +15 -0
- package/packs/ai-engineering/skills/agent-budget/evals/evals.json +27 -0
- package/packs/ai-engineering/skills/agent-budget/evals/files/3/finance-note.md +10 -0
- package/packs/ai-engineering/skills/agent-budget/evals/files/3/pipeline.md +18 -0
- package/packs/ai-engineering/skills/agent-budget/evals/files/3/price-sheet.md +9 -0
- package/packs/ai-engineering/skills/agent-budget/evals/files/3/september-usage.csv +7 -0
- package/packs/ai-engineering/skills/agent-loop-design/evals/evals.json +28 -0
- package/packs/ai-engineering/skills/agent-loop-design/evals/files/3/design-guide-extract.md +13 -0
- package/packs/ai-engineering/skills/agent-loop-design/evals/files/3/legal-advice.md +9 -0
- package/packs/ai-engineering/skills/agent-loop-design/evals/files/3/request-from-head-of-planning.md +11 -0
- package/packs/ai-engineering/skills/agent-loop-design/evals/files/3/trial-notes.md +13 -0
- package/packs/ai-engineering/skills/agent-threat-model/evals/evals.json +27 -0
- package/packs/ai-engineering/skills/agent-threat-model/evals/files/4/agent-config.yaml +19 -0
- package/packs/ai-engineering/skills/agent-threat-model/evals/files/4/agent-spec.md +17 -0
- package/packs/ai-engineering/skills/agent-threat-model/evals/files/4/previous-review.md +10 -0
- package/packs/ai-engineering/skills/agent-threat-model/evals/files/4/vendor-security-note.md +4 -0
- package/packs/ai-engineering/skills/ai-adoption-rollout/evals/evals.json +28 -0
- package/packs/ai-engineering/skills/ai-adoption-rollout/evals/files/2/cno-brief.md +17 -0
- package/packs/ai-engineering/skills/ai-adoption-rollout/evals/files/2/education-capacity.md +5 -0
- package/packs/ai-engineering/skills/ai-adoption-rollout/evals/files/2/pilot-report.md +14 -0
- package/packs/ai-engineering/skills/ai-adoption-rollout/evals/files/2/survey-summary.md +7 -0
- package/packs/ai-engineering/skills/ai-adoption-rollout/evals/files/2/union-letter.md +8 -0
- package/packs/ai-engineering/skills/ai-readiness-assessment/evals/evals.json +28 -0
- package/packs/ai-engineering/skills/ai-readiness-assessment/evals/files/2/ceo-note.md +5 -0
- package/packs/ai-engineering/skills/ai-readiness-assessment/evals/files/2/governance-status.md +6 -0
- package/packs/ai-engineering/skills/ai-readiness-assessment/evals/files/2/interview-notes.md +18 -0
- package/packs/ai-engineering/skills/ai-readiness-assessment/evals/files/2/it-inventory.md +12 -0
- package/packs/ai-engineering/skills/ai-usage-report/evals/evals.json +27 -0
- package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/draftwell-events.csv +249 -0
- package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/export-note.md +9 -0
- package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/published-assets.csv +44 -0
- package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/team-roster.md +10 -0
- package/packs/ai-engineering/skills/ai-use-case-triage/evals/evals.json +27 -0
- package/packs/ai-engineering/skills/ai-use-case-triage/evals/files/2/data-team.md +5 -0
- package/packs/ai-engineering/skills/ai-use-case-triage/evals/files/2/finance-notes.md +7 -0
- package/packs/ai-engineering/skills/ai-use-case-triage/evals/files/2/ideas.csv +10 -0
- package/packs/ai-engineering/skills/ai-use-case-triage/evals/files/2/legal-note.md +7 -0
- package/packs/ai-engineering/skills/llm-eval-harness/evals/evals.json +28 -0
- package/packs/ai-engineering/skills/llm-eval-harness/evals/files/2/current-tests.md +6 -0
- package/packs/ai-engineering/skills/llm-eval-harness/evals/files/2/feature-brief.md +14 -0
- package/packs/ai-engineering/skills/llm-eval-harness/evals/files/2/incident-log.md +8 -0
- package/packs/ai-engineering/skills/llm-eval-harness/evals/files/2/pm-request.md +10 -0
- package/packs/ai-engineering/skills/subagent-design/evals/evals.json +27 -0
- package/packs/ai-engineering/skills/subagent-design/evals/files/3/current-process.md +11 -0
- package/packs/ai-engineering/skills/subagent-design/evals/files/3/director-proposal.md +6 -0
- package/packs/ai-engineering/skills/subagent-design/evals/files/3/scoring-rubric.md +9 -0
- package/packs/ai-engineering/skills/subagent-design/evals/files/3/trial-and-round-notes.md +11 -0
- package/packs/api-builder/skills/eval-harness-generator/evals/evals.json +27 -0
- package/packs/api-builder/skills/eval-harness-generator/evals/files/2/SKILL.md +35 -0
- package/packs/api-builder/skills/prompt-caching-advisor/evals/evals.json +25 -0
- package/packs/api-builder/skills/prompt-caching-advisor/evals/files/2/build_request.py +40 -0
- package/packs/api-builder/skills/prompt-caching-advisor/evals/files/2/notes.md +10 -0
- package/packs/api-builder/skills/token-budget-estimator/evals/evals.json +27 -0
- package/packs/api-builder/skills/token-budget-estimator/evals/files/2/pilot-usage.csv +17 -0
- package/packs/api-builder/skills/token-budget-estimator/evals/files/2/workflow.md +42 -0
- package/packs/career/pack.json +1 -1
- package/packs/career/skills/job-fit-analysis/SKILL.md +2 -1
- package/packs/career/skills/job-fit-analysis/manifest.json +3 -2
- package/packs/career/skills/role-shortlist/SKILL.md +107 -0
- package/packs/career/skills/role-shortlist/evals/eval_queries.json +34 -0
- package/packs/career/skills/role-shortlist/evals/evals.json +75 -0
- package/packs/career/skills/role-shortlist/evals/files/1/careers-index.html +22 -0
- package/packs/career/skills/role-shortlist/evals/files/1/cv.md +44 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/clinical-coding-officer-bramwick.md +23 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/data-and-performance-analyst.html +28 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/estates-maintenance-electrician-bramwick.md +20 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/healthcare-support-worker-nights-corrin-bay.md +20 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/medical-secretary-cardiology-elsford.html +30 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/outpatient-booking-team-leader-bramwick.md +23 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/patient-pathway-coordinator-bramwick.md +30 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/patient-pathway-coordinator-elsford.md +30 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/reception-and-admin-assistant-corrin-bay.md +21 -0
- package/packs/career/skills/role-shortlist/evals/files/1/postings/senior-care-coordinator.md +25 -0
- package/packs/career/skills/role-shortlist/evals/files/2/cv.md +33 -0
- package/packs/career/skills/role-shortlist/evals/files/2/job-board-export.csv +11 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10422.md +26 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10431.md +25 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10455.md +27 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10468.md +25 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10476.md +25 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10490.md +24 -0
- package/packs/career/skills/role-shortlist/evals/files/2/postings/FJ-10587.md +26 -0
- package/packs/career/skills/role-shortlist/evals/files/4/brackwater-careers.html +118 -0
- package/packs/career/skills/role-shortlist/evals/files/4/mere-castell-cv.md +44 -0
- package/packs/career/skills/role-shortlist/evals/files/4/tradesboard-export.csv +6 -0
- package/packs/career/skills/role-shortlist/manifest.json +38 -0
- package/packs/converters/skills/file-to-markdown/evals/evals.json +27 -0
- package/packs/converters/skills/file-to-markdown/evals/files/3/harbourline-shift-policy.docx +0 -0
- package/packs/converters/skills/file-to-markdown/evals/files/4/seed-swap-2026.csv +10 -0
- package/packs/converters/skills/md-to-docx/evals/evals.json +28 -0
- package/packs/converters/skills/md-to-docx/evals/files/3/brand.json +12 -0
- package/packs/converters/skills/md-to-docx/evals/files/3/img/team-photo.png +0 -0
- package/packs/converters/skills/md-to-docx/evals/files/3/tender-response.md +51 -0
- package/packs/converters/skills/md-to-html/evals/evals.json +26 -0
- package/packs/converters/skills/md-to-html/evals/files/2/brand.json +13 -0
- package/packs/converters/skills/md-to-html/evals/files/2/img/kick-net.png +0 -0
- package/packs/converters/skills/md-to-html/evals/files/2/river-survey-guide.md +53 -0
- package/packs/converters/skills/md-to-html/evals/files/3/nanas-lentil-soup.md +21 -0
- package/packs/converters/skills/md-to-html/evals/files/3/pot.png +0 -0
- package/packs/converters/skills/md-to-xlsx/evals/evals.json +26 -0
- package/packs/converters/skills/md-to-xlsx/evals/files/3/depot-costs-q3.md +20 -0
- package/packs/converters/skills/md-to-xlsx/evals/files/4/hollowmere-5k-results.json +7 -0
- package/packs/converters/skills/mermaid-render/evals/evals.json +26 -0
- package/packs/converters/skills/mermaid-render/evals/files/2/dispensing-diagrams.md +39 -0
- package/packs/core/skills/brief-intake/evals/evals.json +27 -0
- package/packs/core/skills/brief-intake/evals/files/2/ops-meeting-notes.md +18 -0
- package/packs/core/skills/brief-intake/evals/files/2/thread.txt +40 -0
- package/packs/core/skills/council-review/evals/evals.json +28 -0
- package/packs/core/skills/council-review/evals/files/2/compliance-note.md +11 -0
- package/packs/core/skills/council-review/evals/files/2/link-outages-q3.csv +11 -0
- package/packs/core/skills/council-review/evals/files/2/proposal.md +39 -0
- package/packs/core/skills/council-review/evals/files/2/vendor-letter.txt +12 -0
- package/packs/core/skills/doc-critique/evals/evals.json +27 -0
- package/packs/core/skills/doc-critique/evals/files/2/exec-summary.md +43 -0
- package/packs/core/skills/output-hygiene/evals/evals.json +27 -0
- package/packs/core/skills/output-hygiene/evals/files/3/newsletter.md +17 -0
- package/packs/data-analytics/skills/dashboard-spec/evals/evals.json +27 -0
- package/packs/data-analytics/skills/dashboard-spec/evals/files/2/data-inventory.md +16 -0
- package/packs/data-analytics/skills/dashboard-spec/evals/files/2/request-email.md +28 -0
- package/packs/data-analytics/skills/sql-review/evals/evals.json +27 -0
- package/packs/data-analytics/skills/sql-review/evals/files/2/context.md +10 -0
- package/packs/data-analytics/skills/sql-review/evals/files/2/monthly_donor_revenue.sql +16 -0
- package/packs/data-analytics/skills/sql-review/evals/files/2/schema.md +20 -0
- package/packs/design/skills/brand-kit/evals/evals.json +26 -0
- package/packs/design/skills/brand-kit/evals/files/2/brand-guidelines.md +32 -0
- package/packs/design/skills/brand-kit/evals/files/2/contact-sheet.txt +6 -0
- package/packs/design/skills/brand-kit/evals/files/2/logo.svg +5 -0
- package/packs/design/skills/brand-kit/evals/files/2/website-colours.css +9 -0
- package/packs/design/skills/brand-kit/evals/files/3/muddy-paws-logo.png +0 -0
- package/packs/design/skills/deck-builder/evals/evals.json +27 -0
- package/packs/design/skills/deck-builder/evals/files/4/ashby-vale-board-notes.md +36 -0
- package/packs/design/skills/marketing-flyer/evals/evals.json +27 -0
- package/packs/design/skills/marketing-flyer/evals/files/2/brand.json +14 -0
- package/packs/design/skills/marketing-flyer/evals/files/2/larchfield-logo.svg +4 -0
- package/packs/design/skills/marketing-flyer/evals/files/2/manager-email.txt +6 -0
- package/packs/design/skills/marketing-flyer/evals/files/2/open-day-brief.md +15 -0
- package/packs/design/skills/slide-outliner/evals/evals.json +26 -0
- package/packs/design/skills/slide-outliner/evals/files/2/uv-dosing-design-notes.md +38 -0
- package/packs/dev-team/skills/accessibility-audit/evals/evals.json +27 -0
- package/packs/dev-team/skills/accessibility-audit/evals/files/2/booking.html +79 -0
- package/packs/dev-team/skills/accessibility-audit/evals/files/2/scan-report.txt +23 -0
- package/packs/dev-team/skills/accessibility-audit/evals/files/2/styles.css +56 -0
- package/packs/dev-team/skills/agents-md-generator/evals/evals.json +27 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/.github/workflows/ci.yml +12 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/CONTRIBUTING.md +20 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/README.md +15 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/data/raw/README.md +7 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/pyproject.toml +23 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/scripts/deploy.sh +6 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/src/sensor_ingest/__init__.py +1 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/src/sensor_ingest/parse.py +20 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/tests/test_gateway.py +10 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/5/tests/test_parse.py +7 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/6/clean_marks.R +5 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/6/grades_final.csv +6 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/6/make_report.R +7 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/6/notes.txt +8 -0
- package/packs/dev-team/skills/agents-md-generator/evals/files/6/raw_marks.csv +6 -0
- package/packs/dev-team/skills/bug-triage/evals/evals.json +27 -0
- package/packs/dev-team/skills/bug-triage/evals/files/2/payments-log.csv +15 -0
- package/packs/dev-team/skills/bug-triage/evals/files/2/slack-thread.txt +16 -0
- package/packs/dev-team/skills/bug-triage/evals/files/2/ticket.txt +10 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/evals.json +27 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/2/TICKET.md +20 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/2/closures.csv +5 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/2/desk.py +11 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/2/fees.py +14 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/2/tests/test_fees.py +26 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/3/away.txt +5 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/3/members.txt +8 -0
- package/packs/dev-team/skills/feature-implement-loop/evals/files/3/rota.py +12 -0
- package/packs/dev-team/skills/launch-readiness/evals/evals.json +27 -0
- package/packs/dev-team/skills/launch-readiness/evals/files/2/launch-brief.md +32 -0
- package/packs/dev-team/skills/launch-readiness/evals/files/2/load-test-summary.txt +11 -0
- package/packs/dev-team/skills/launch-readiness/evals/files/2/privacy-signoff.txt +9 -0
- package/packs/dev-team/skills/launch-readiness/evals/files/2/sms-template.txt +2 -0
- package/packs/dev-team/skills/migration-plan/evals/evals.json +27 -0
- package/packs/dev-team/skills/migration-plan/evals/files/2/context.md +27 -0
- package/packs/dev-team/skills/migration-plan/evals/files/2/deferral-codes.csv +8 -0
- package/packs/dev-team/skills/migration-plan/evals/files/2/field-mapping.csv +11 -0
- package/packs/dev-team/skills/migration-plan/evals/files/2/trial-import-summary.txt +9 -0
- package/packs/dev-team/skills/pr-description-writer/evals/evals.json +27 -0
- package/packs/dev-team/skills/pr-description-writer/evals/files/4/changes.diff +64 -0
- package/packs/dev-team/skills/pr-description-writer/evals/files/4/commits.txt +2 -0
- package/packs/dev-team/skills/pre-merge-review/evals/evals.json +28 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/CHANGE.md +12 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/CONTRIBUTING.md +5 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/change.diff +53 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/clinic_dosing/__init__.py +1 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/clinic_dosing/dosing.py +30 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/clinic_dosing/drugs.py +6 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/tests/__init__.py +0 -0
- package/packs/dev-team/skills/pre-merge-review/evals/files/3/tests/test_dosing.py +29 -0
- package/packs/dev-team/skills/sonar-onboard/evals/evals.json +27 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/.github/workflows/ci.yml +10 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/.gitlab-ci.yml +32 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/README.md +11 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/pyproject.toml +16 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/src/wayline/__init__.py +1 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/src/wayline/_generated/__init__.py +0 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/src/wayline/_generated/stops_pb2.py +4 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/src/wayline/timetable.py +12 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/src/wayline/vendor/__init__.py +0 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/src/wayline/vendor/gtfs_lite/__init__.py +3 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/tests/test_timetable.py +14 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/web/package.json +20 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/web/src/board.test.ts +9 -0
- package/packs/dev-team/skills/sonar-onboard/evals/files/2/web/src/board.ts +8 -0
- package/packs/dev-team/skills/sonar-review/evals/evals.json +27 -0
- package/packs/dev-team/skills/sonar-review/evals/files/2/changed-files.txt +5 -0
- package/packs/dev-team/skills/sonar-review/evals/files/2/hotspots.json +7 -0
- package/packs/dev-team/skills/sonar-review/evals/files/2/issues.json +26 -0
- package/packs/dev-team/skills/sonar-review/evals/files/2/quality-gate.json +19 -0
- package/packs/dev-team/skills/tech-debt-register/evals/evals.json +28 -0
- package/packs/dev-team/skills/tech-debt-register/evals/files/4/incidents.csv +7 -0
- package/packs/dev-team/skills/tech-debt-register/evals/files/4/retro-notes.md +21 -0
- package/packs/dev-team/skills/test-plan-generator/evals/evals.json +27 -0
- package/packs/dev-team/skills/test-plan-generator/evals/files/2/permit-renewal-spec.md +40 -0
- package/packs/dev-team/skills/user-story-splitter/evals/evals.json +27 -0
- package/packs/dev-team/skills/user-story-splitter/evals/files/2/prd-shift-swap.md +38 -0
- package/packs/experience-design/skills/content-design/evals/evals.json +27 -0
- package/packs/experience-design/skills/content-design/evals/files/2/contact-centre-notes.md +18 -0
- package/packs/experience-design/skills/content-design/evals/files/2/current-page.md +17 -0
- package/packs/experience-design/skills/content-design/evals/files/2/policy-extract.md +17 -0
- package/packs/experience-design/skills/design-system-spec/evals/evals.json +27 -0
- package/packs/experience-design/skills/design-system-spec/evals/files/2/designer-notes.md +23 -0
- package/packs/experience-design/skills/design-system-spec/evals/files/2/eng-thread.md +11 -0
- package/packs/experience-design/skills/design-system-spec/evals/files/2/tokens.json +27 -0
- package/packs/experience-design/skills/information-architecture/evals/evals.json +27 -0
- package/packs/experience-design/skills/information-architecture/evals/files/2/page-inventory.csv +28 -0
- package/packs/experience-design/skills/information-architecture/evals/files/2/search-log.csv +16 -0
- package/packs/experience-design/skills/information-architecture/evals/files/2/stakeholder-notes.md +13 -0
- package/packs/experience-design/skills/service-blueprint/evals/evals.json +27 -0
- package/packs/experience-design/skills/service-blueprint/evals/files/2/complaints-summary.md +14 -0
- package/packs/experience-design/skills/service-blueprint/evals/files/2/process-notes.md +15 -0
- package/packs/experience-design/skills/service-blueprint/evals/files/2/timings.csv +5 -0
- package/packs/experience-design/skills/ux-writing/evals/evals.json +27 -0
- package/packs/experience-design/skills/ux-writing/evals/files/2/brand-notes.md +8 -0
- package/packs/experience-design/skills/ux-writing/evals/files/2/error-codes.csv +6 -0
- package/packs/experience-design/skills/ux-writing/evals/files/2/screens.md +26 -0
- package/packs/grc/skills/dpia/evals/evals.json +27 -0
- package/packs/grc/skills/dpia/evals/files/2/legal-notes.md +6 -0
- package/packs/grc/skills/dpia/evals/files/2/project-brief.md +17 -0
- package/packs/grc/skills/dpia/evals/files/2/vendor-factsheet.md +8 -0
- package/packs/grc/skills/risk-register/evals/evals.json +27 -0
- package/packs/grc/skills/risk-register/evals/files/2/committee-notes.md +8 -0
- package/packs/grc/skills/risk-register/evals/files/2/risks-draft.csv +9 -0
- package/packs/grc/skills/risk-register/evals/files/2/scoring-scale.md +12 -0
- package/packs/grc/skills/security-questionnaire-response/evals/evals.json +27 -0
- package/packs/grc/skills/security-questionnaire-response/evals/files/4/evidence/business-continuity-plan.md +7 -0
- package/packs/grc/skills/security-questionnaire-response/evals/files/4/evidence/information-security-policy.md +10 -0
- package/packs/grc/skills/security-questionnaire-response/evals/files/4/evidence/pentest-summary-2026.md +10 -0
- package/packs/grc/skills/security-questionnaire-response/evals/files/4/evidence/staff-handbook-extract.md +3 -0
- package/packs/grc/skills/security-questionnaire-response/evals/files/4/instructions.md +10 -0
- package/packs/grc/skills/security-questionnaire-response/evals/files/4/questionnaire.csv +11 -0
- package/packs/grc/skills/soc2-evidence-map/evals/evals.json +27 -0
- package/packs/grc/skills/soc2-evidence-map/evals/files/2/audit-scope.md +10 -0
- package/packs/grc/skills/soc2-evidence-map/evals/files/2/controls.csv +13 -0
- package/packs/grc/skills/soc2-evidence-map/evals/files/2/tooling-notes.md +8 -0
- package/packs/infra-as-code/skills/terraform-module/evals/evals.json +27 -0
- package/packs/infra-as-code/skills/terraform-module/evals/files/3/requirements.md +23 -0
- package/packs/infra-as-code/skills/terraform-plan-review/evals/evals.json +27 -0
- package/packs/infra-as-code/skills/terraform-plan-review/evals/files/3/plan.txt +87 -0
- package/packs/product-manager/skills/business-case/evals/evals.json +27 -0
- package/packs/product-manager/skills/business-case/evals/files/2/hollin_vale_inputs.md +46 -0
- package/packs/product-manager/skills/okr-cascade/evals/evals.json +27 -0
- package/packs/product-manager/skills/okr-cascade/evals/files/3/quillfield_2027.md +45 -0
- package/packs/product-manager/skills/prd-draft/evals/evals.json +27 -0
- package/packs/product-manager/skills/prd-draft/evals/files/2/brief.md +7 -0
- package/packs/product-manager/skills/prd-draft/evals/files/2/call_center_notes.md +7 -0
- package/packs/product-manager/skills/prd-draft/evals/files/2/meter_facts.md +6 -0
- package/packs/product-manager/skills/prfaq/evals/evals.json +26 -0
- package/packs/product-manager/skills/prfaq/evals/files/3/drone_notes.md +25 -0
- package/packs/product-manager/skills/requirements-interview/evals/evals.json +27 -0
- package/packs/product-manager/skills/requirements-interview/evals/files/2/project_brief.md +29 -0
- package/packs/product-manager/skills/strategy-analysis/evals/evals.json +27 -0
- package/packs/product-manager/skills/strategy-analysis/evals/files/4/market_notes.md +21 -0
- package/packs/product-manager/skills/success-metrics/evals/evals.json +28 -0
- package/packs/product-manager/skills/success-metrics/evals/files/3/brief.md +21 -0
- package/packs/product-manager/skills/user-journey-map/evals/evals.json +26 -0
- package/packs/product-manager/skills/user-journey-map/evals/files/3/research_notes.md +30 -0
- package/packs/research/skills/hypothesis-comparison/evals/evals.json +27 -0
- package/packs/research/skills/hypothesis-comparison/evals/files/2/season_notes.md +29 -0
- package/packs/research/skills/research-plan/evals/evals.json +28 -0
- package/packs/research/skills/research-plan/evals/files/3/request.md +19 -0
- package/packs/skill-engineering/skills/skill-author/evals/evals.json +27 -0
- package/packs/skill-engineering/skills/skill-author/evals/files/2/constraints.md +7 -0
- package/packs/skill-engineering/skills/skill-author/evals/files/2/example-discharge.md +22 -0
- package/packs/skill-engineering/skills/skill-author/evals/files/2/process.md +15 -0
- package/packs/skill-engineering/skills/skill-review/evals/evals.json +27 -0
- package/packs/skill-engineering/skills/skill-review/evals/files/2/invoice-chaser/SKILL.md +20 -0
- package/packs/skill-engineering/skills/skill-review/evals/files/2/invoice-chaser/evals/evals.json +12 -0
- package/packs/skill-engineering/skills/skill-review/evals/files/2/invoice-chaser/scripts/send_reminders.py +46 -0
- package/packs/solution-architect/skills/adr-generator/evals/evals.json +27 -0
- package/packs/solution-architect/skills/adr-generator/evals/files/2/integration-notes.md +23 -0
- package/packs/solution-architect/skills/adr-generator/evals/files/2/larchway-quote.txt +10 -0
- package/packs/solution-architect/skills/api-contract-draft/evals/evals.json +27 -0
- package/packs/solution-architect/skills/api-contract-draft/evals/files/2/booking-brief.md +18 -0
- package/packs/solution-architect/skills/api-contract-draft/evals/files/2/facilities-policy-excerpt.md +7 -0
- package/packs/solution-architect/skills/architecture-diagrams/evals/evals.json +27 -0
- package/packs/solution-architect/skills/architecture-diagrams/evals/files/2/telemetry-overview.md +23 -0
- package/packs/solution-architect/skills/data-contract/evals/evals.json +27 -0
- package/packs/solution-architect/skills/data-contract/evals/files/2/grain_deliveries.sql +15 -0
- package/packs/solution-architect/skills/data-contract/evals/files/2/publisher-notes.md +14 -0
- package/packs/solution-architect/skills/data-contract/evals/files/2/sample_rows.csv +6 -0
- package/packs/solution-architect/skills/figma-diagrams/evals/evals.json +26 -0
- package/packs/solution-architect/skills/figma-diagrams/evals/files/2/signage-file.json +373 -0
- package/packs/solution-architect/skills/nfr-spec/evals/evals.json +27 -0
- package/packs/solution-architect/skills/nfr-spec/evals/files/2/vehicle-booking-brief.md +21 -0
- package/packs/solution-architect/skills/reverse-architecture/evals/evals.json +28 -0
- package/packs/solution-architect/skills/reverse-architecture/evals/files/2/README.md +11 -0
- package/packs/solution-architect/skills/reverse-architecture/evals/files/2/docker-compose.yml +42 -0
- package/packs/solution-architect/skills/reverse-architecture/evals/files/2/env.example +3 -0
- package/packs/solution-architect/skills/reverse-architecture/evals/files/2/nginx.conf +15 -0
- package/packs/solution-architect/skills/reverse-architecture/evals/files/2/worker-requirements.txt +4 -0
- package/packs/solution-architect/skills/threat-model/evals/evals.json +28 -0
- package/packs/solution-architect/skills/threat-model/evals/files/2/permits-design.md +23 -0
- package/packs/sre-oncall/skills/capacity-cost-model/evals/evals.json +28 -0
- package/packs/sre-oncall/skills/capacity-cost-model/evals/files/2/brief.md +22 -0
- package/packs/sre-oncall/skills/capacity-cost-model/evals/files/2/price-sheet.md +13 -0
- package/packs/sre-oncall/skills/capacity-cost-model/evals/files/2/rollout-plan.md +27 -0
- package/packs/sre-oncall/skills/cloud-cost-review/evals/evals.json +28 -0
- package/packs/sre-oncall/skills/cloud-cost-review/evals/files/3/cost-export-2026-09.csv +25 -0
- package/packs/sre-oncall/skills/cloud-cost-review/evals/files/3/notes.md +11 -0
- package/packs/sre-oncall/skills/cloud-cost-review/evals/files/3/utilisation-2026-09.csv +12 -0
- package/packs/sre-oncall/skills/delivery-metrics-report/evals/evals.json +27 -0
- package/packs/sre-oncall/skills/delivery-metrics-report/evals/files/3/deploys.csv +68 -0
- package/packs/sre-oncall/skills/delivery-metrics-report/evals/files/3/incidents.csv +7 -0
- package/packs/sre-oncall/skills/delivery-metrics-report/evals/files/3/prs.csv +46 -0
- package/packs/sre-oncall/skills/incident-comms/evals/evals.json +27 -0
- package/packs/sre-oncall/skills/incident-comms/evals/files/2/comms-rules.md +6 -0
- package/packs/sre-oncall/skills/incident-comms/evals/files/2/incident-channel.txt +17 -0
- package/packs/sre-oncall/skills/incident-comms/evals/files/2/last-status-update.md +5 -0
- package/packs/sre-oncall/skills/observability-plan/evals/evals.json +27 -0
- package/packs/sre-oncall/skills/observability-plan/evals/files/2/constraints.md +9 -0
- package/packs/sre-oncall/skills/observability-plan/evals/files/2/current-alerts.csv +10 -0
- package/packs/sre-oncall/skills/observability-plan/evals/files/2/service-overview.md +27 -0
- package/packs/sre-oncall/skills/runbook-generator/evals/evals.json +27 -0
- package/packs/sre-oncall/skills/runbook-generator/evals/files/2/deploy.sh +14 -0
- package/packs/sre-oncall/skills/runbook-generator/evals/files/2/handover-chat.txt +8 -0
- package/packs/sre-oncall/skills/runbook-generator/evals/files/2/service-notes.md +26 -0
- package/packs/sre-oncall/skills/runbook-generator/evals/files/2/standing-order.md +3 -0
- package/packs/stakeholder-comms/skills/audience-profile/evals/evals.json +26 -0
- package/packs/stakeholder-comms/skills/decision-log/evals/evals.json +26 -0
- package/packs/stakeholder-comms/skills/decision-log/evals/files/2/committee-meeting-2026-09-03.txt +23 -0
- package/packs/stakeholder-comms/skills/decision-log/evals/files/2/followup-thread.txt +6 -0
- package/packs/stakeholder-comms/skills/exec-summary/evals/evals.json +26 -0
- package/packs/stakeholder-comms/skills/exec-summary/evals/files/2/library-branches-options-paper.md +67 -0
- package/packs/trackers/skills/backlog-triage/evals/evals.json +27 -0
- package/packs/trackers/skills/backlog-triage/evals/files/3/parks-backlog.csv +19 -0
- package/packs/trackers/skills/team-status-report/evals/evals.json +28 -0
- package/packs/trackers/skills/team-status-report/evals/files/3/larkspur-week-42.csv +15 -0
- package/packs/trackers/skills/tracker-brief-sync/evals/evals.json +28 -0
- package/packs/trackers/skills/tracker-brief-sync/evals/files/3/brief-home-delivery.md +44 -0
|
@@ -14,6 +14,33 @@
|
|
|
14
14
|
"A Mermaid diagram with one subgraph per lane matches the table",
|
|
15
15
|
"Does not invent teams, systems, SLAs or durations not in the prompt; inferred ones are tagged [assumption] or [estimate]"
|
|
16
16
|
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"held_out": "2026-10-18",
|
|
21
|
+
"prompt": "Customers of Oakhollow Home (we sell furniture with optional delivery and assembly) keep complaining about delivery. Our Operations Manager wrote up how it works in process-notes.md, timings are in timings.csv, and last quarter's complaints are in complaints-summary.md. Show me what really happens behind the scenes from order to assembled furniture, where it breaks, and what we should fix first.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Points out that the step timings add up to about 9 working days, not the 'about 5 days' in the Operations Manager's notes",
|
|
24
|
+
"Flags the disagreement over who makes the booking call (the notes say the warehouse; complaints and Brightlane say the courier sometimes does) instead of choosing one version silently",
|
|
25
|
+
"Leaves the owner of damaged-item replacement as unassigned or unknown, and flags it, rather than naming an owner the input doesn't give",
|
|
26
|
+
"Links the biggest complaint category (151 'nobody called me to book') to the specific step where it happens, and ranks fixes by the complaint data",
|
|
27
|
+
"Recommended fixes respect the no-new-software constraint, or clearly flag any that would break it",
|
|
28
|
+
"Does not invent cost savings or other figures; says the files don't contain the data needed to put a money value on each fix",
|
|
29
|
+
"Delivers the full analysis rather than stopping to ask questions first"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"held_out": "2026-10-18",
|
|
35
|
+
"prompt": "i run a little home bakery doing custom birthday cakes. people order through instagram messages, i write it in a notebook, my sister bakes and decorates, i deliver or they collect. problems: sometimes we forget to take the deposit, and twice the date was wrong and a cake wasn't ready. can you show me where it's going wrong behind the scenes? one table please, no long write-up.",
|
|
36
|
+
"assertions": [
|
|
37
|
+
"Identifies copying the order from the message into the notebook as the likely place the date goes wrong",
|
|
38
|
+
"Identifies the missing step or check where the deposit should be taken, and suggests something simple to fix it",
|
|
39
|
+
"Separates what the customer sees from what happens behind the scenes (the notebook, the handover to the sister, baking)",
|
|
40
|
+
"Suggestions are simple and fit a two-person home business, not new software or staff",
|
|
41
|
+
"Does not invent facts not given, such as prices, deposit amounts, order volumes or extra staff",
|
|
42
|
+
"Delivers one table with at most a few lines around it, as asked"
|
|
43
|
+
]
|
|
17
44
|
}
|
|
18
45
|
]
|
|
19
46
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Customer Service complaints, delivery and assembly, Q3 2026 (412 complaints)
|
|
2
|
+
|
|
3
|
+
| Category | Count |
|
|
4
|
+
|---|---|
|
|
5
|
+
| "Nobody called me to book" / chased us for a date | 151 |
|
|
6
|
+
| Delivery window missed or changed last minute | 88 |
|
|
7
|
+
| Item arrived damaged, replacement took weeks | 73 |
|
|
8
|
+
| Back-ordered item, not told until the slot call | 61 |
|
|
9
|
+
| Assembly incomplete or poor | 39 |
|
|
10
|
+
|
|
11
|
+
Customer Service notes:
|
|
12
|
+
- Several customers say the booking call came from a Brightlane number, not from Oakhollow. Brightlane confirms they "sometimes call to book when the warehouse hasn't got round to it". The Operations Manager's notes say the warehouse makes all booking calls.
|
|
13
|
+
- For damaged items, customers report being told by Customer Service to "wait for the warehouse to call" and by the warehouse to "call Customer Service".
|
|
14
|
+
- Customer Service cannot see proof of delivery without emailing Brightlane, which takes 1–2 days to answer.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Delivery and assembly — how it works today (written by the Operations Manager, Oakhollow Home)
|
|
2
|
+
|
|
3
|
+
Oakhollow Home sells sofas, beds and wardrobes from 11 showrooms. Customers can add "Delivery + Assembly" at checkout. From order to assembled furniture takes about 5 days end to end.
|
|
4
|
+
|
|
5
|
+
1. **Order placed.** Customer buys in a showroom (sales associate keys it into the till system) or online (web shop). Customer gets an order confirmation email with "We'll be in touch to book your delivery".
|
|
6
|
+
2. **Stock allocated.** Overnight batch in the warehouse management system (WMS) allocates stock. If an item is out of stock it goes on back-order; nobody is notified automatically — the warehouse team checks a back-order report on Mondays.
|
|
7
|
+
3. **Slot booking call.** Our warehouse team phones the customer to agree a delivery day. They use the courier's slot calendar, which they log into separately.
|
|
8
|
+
4. **Picking and loading.** Warehouse picks the order the day before delivery and loads the courier's van.
|
|
9
|
+
5. **Delivery day.** The courier (Brightlane Logistics, a subcontractor) texts the customer a 4-hour window the evening before. Two-person crew delivers and assembles.
|
|
10
|
+
6. **Damaged on arrival.** If the item is damaged, the crew takes photos and leaves it, or takes it away. Someone then arranges a replacement — I'm honestly not sure who owns this; it moves between Customer Service and the warehouse.
|
|
11
|
+
7. **Sign-off.** Customer signs on the crew's handheld. Proof of delivery syncs to the courier's system, not ours. Customer Service sees it only if they ask Brightlane.
|
|
12
|
+
|
|
13
|
+
Constraint from the Finance Director: **no new software spend this financial year.** Fixes have to use the systems, people and contracts we already have.
|
|
14
|
+
|
|
15
|
+
Request from the Board: "For each fix, tell us how much money it will save."
|
|
@@ -14,6 +14,33 @@
|
|
|
14
14
|
"No exclamation marks, matching the given style guide",
|
|
15
15
|
"Does not invent limits, fees, processing times or policies not in the prompt; unknowns are placeholders listed as open questions"
|
|
16
16
|
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"held_out": "2026-10-18",
|
|
21
|
+
"prompt": "Write the on-screen text for our Voltbay public electric vehicle charger. The screens, current drafts and display limits are in screens.md, the error codes are in error-codes.csv, and our voice rules are in brand-notes.md. I need final strings for every screen and every error, ready for the hardware team.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Every button fits 16 characters, every title fits 28 characters and every body fits 90 characters, as screens.md requires",
|
|
24
|
+
"Uses one name for the unit (for example 'charger') everywhere, with none of 'station', 'charge point' or 'pump' left in the strings",
|
|
25
|
+
"The E43 message does not say the card has expired; it says the payment wasn't approved and what the person can do, such as trying another card",
|
|
26
|
+
"Each error message says what happened and what to do next, with the code shown at most as a small reference rather than as the whole message",
|
|
27
|
+
"Errors the user can't fix themselves (E51 ground fault, E60 network) point them to another option or support, and the user-fixable E12 does not send them to support",
|
|
28
|
+
"Does not hardcode a price per kWh and does not invent a support phone number or URL; the price comes from the system and the number is left as a placeholder",
|
|
29
|
+
"Covers all five screens and all five error codes"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"held_out": "2026-10-18",
|
|
35
|
+
"prompt": "our yoga studio booking app shows 'Error 409' when someone tries to book a class that's full. what should it say instead? there's also a waitlist button, what should that say? when someone cancels, the first person on the waitlist gets an email. just the text pls, a couple of options, nothing long",
|
|
36
|
+
"assertions": [
|
|
37
|
+
"The full-class message says plainly that the class is full and offers the waitlist (or another class) as the next step",
|
|
38
|
+
"No error code or technical wording in the message the person sees",
|
|
39
|
+
"Button text is short (a few words) and says what will happen when tapped",
|
|
40
|
+
"Copy about the waitlist matches what the studio said: an email goes to the first person on the waitlist; it does not promise a guaranteed place, a text message or automatic booking",
|
|
41
|
+
"Does not invent features, prices or policies the studio didn't mention",
|
|
42
|
+
"Gives just the text with a couple of options, short as asked"
|
|
43
|
+
]
|
|
17
44
|
}
|
|
18
45
|
]
|
|
19
46
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Voltbay voice notes
|
|
2
|
+
|
|
3
|
+
- Plain and calm. People reading this may be stressed, late or cold.
|
|
4
|
+
- Never tell users to contact support for things they can fix themselves.
|
|
5
|
+
- Never show raw error codes as the whole message. A code can appear small at the end so a caller can quote it.
|
|
6
|
+
- The price per kWh is set by each site owner and can change daily. The screen gets it from the network at runtime; the copy must not hardcode a figure.
|
|
7
|
+
- A support phone number will be printed on a sticker on each unit. We don't have the number per site yet.
|
|
8
|
+
- Product team keeps calling the unit different things: "station", "charge point", "charger", "pump". We want one name, used everywhere on screen.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
code,engineering_description,current_draft_message,user_can_fix
|
|
2
|
+
E12,Connector not detected / cable not fully seated,Error E12 occurred,yes
|
|
3
|
+
E27,Vehicle rejected charge (vehicle-side fault or vehicle charge limit reached),Charger fault. Please try again later.,partly
|
|
4
|
+
E43,Payment pre-authorisation declined by card issuer,Your card has expired.,yes
|
|
5
|
+
E51,Ground fault detected — unit locks itself for safety,Error E51 occurred,no
|
|
6
|
+
E60,Network unavailable; unit cannot authorise payment,Error E60 occurred,no
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Voltbay public charger — screen copy (draft v0.3)
|
|
2
|
+
|
|
3
|
+
Voltbay makes pay-as-you-go electric vehicle chargers installed in council car parks and supermarket car parks. Each unit has a small colour touchscreen and a contactless card reader. The screen is read in daylight, often by someone standing in the rain.
|
|
4
|
+
|
|
5
|
+
Display limits (from hardware team):
|
|
6
|
+
- Buttons: max **16 characters** including spaces.
|
|
7
|
+
- Titles: max **28 characters**.
|
|
8
|
+
- Body text: max **90 characters**, max 2 lines.
|
|
9
|
+
|
|
10
|
+
| Screen | Element | Current draft |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| S1 Idle | Title | Welcome to your Voltbay charging station |
|
|
13
|
+
| S1 Idle | Body | Plug in your vehicle to the pump then tap to begin |
|
|
14
|
+
| S1 Idle | Button | Start charging session now |
|
|
15
|
+
| S2 Payment | Title | Payment |
|
|
16
|
+
| S2 Payment | Body | Tap your card on the reader. Price: £0.45/kWh |
|
|
17
|
+
| S2 Payment | Button | Cancel |
|
|
18
|
+
| S3 Charging | Title | Charge point active |
|
|
19
|
+
| S3 Charging | Body | Your car is charging. kWh delivered and cost so far update live. |
|
|
20
|
+
| S3 Charging | Button | Stop |
|
|
21
|
+
| S4 Finished | Title | Charging complete |
|
|
22
|
+
| S4 Finished | Body | Unplug the cable from the charger. Receipt available. |
|
|
23
|
+
| S4 Finished | Button | Get receipt |
|
|
24
|
+
| S5 Error | Title | Error |
|
|
25
|
+
| S5 Error | Body | (one per error code — see error-codes.csv) |
|
|
26
|
+
| S5 Error | Button | OK |
|
|
@@ -14,6 +14,33 @@
|
|
|
14
14
|
"Retention periods and other facts not in the prompt are marked to confirm and listed as DPO questions, not invented",
|
|
15
15
|
"The DPO advice and sign-off fields are left blank, and the not-legal-advice statement appears once"
|
|
16
16
|
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"held_out": "2026-10-18",
|
|
21
|
+
"prompt": "Kestrel Fitness wants to replace membership cards with facial recognition at the gym turnstiles. Draft the DPIA for our DPO. The project brief is project-brief.md, the vendor's factsheet is vendor-factsheet.md, and legal's notes are legal-notes.md. Keep it to what the DPO can review in one sitting, no more than about 2,000 words.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Identifies face templates used to identify members as special category (biometric) data, and says legitimate interests alone is not enough: an Article 9 condition is needed, realistically explicit consent",
|
|
24
|
+
"Points out that phasing out card entry undermines consent being freely given, and that a non-biometric alternative should stay",
|
|
25
|
+
"Flags both vendor facts that the brief doesn't account for: support access from outside the EEA (a transfer with no mechanism in the draft DPA) and keeping templates and photos for 24 months for model improvement, against the brief's 'deleted when membership ends'",
|
|
26
|
+
"Addresses the junior members aged 14–17 as a specific risk",
|
|
27
|
+
"Does not simply conclude that the supervisory authority need not be consulted as the COO asked; ties the prior-consultation view to the residual risk after measures",
|
|
28
|
+
"Does not invent facts not in the files, such as vendor certifications, match accuracy rates, member numbers or a signed DPA; unknowns become questions for the DPO",
|
|
29
|
+
"Stays within about 2,000 words and keeps CCTV out of scope as the brief states"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"held_out": "2026-10-18",
|
|
35
|
+
"prompt": "Hi, I manage a small dental practice. We want to start texting appointment reminders to patients through a free messaging app on our receptionist's own phone, using the mobile numbers we already have on file. Someone at a training day said we might need a 'DPIA'?? Do we? And if so can you give me a one-page version I can keep on file.",
|
|
36
|
+
"assertions": [
|
|
37
|
+
"Gives a clear answer on whether a DPIA is needed and why, rather than only saying 'ask a lawyer'",
|
|
38
|
+
"Recognises that dental appointment reminders reveal health-related information about patients",
|
|
39
|
+
"Flags using a free messaging app on a staff member's personal phone as the main risk (practice control, loss of the phone, the app provider's access) and suggests safer options",
|
|
40
|
+
"Raises whether patients' numbers can be used for reminders and how patients can opt out",
|
|
41
|
+
"Does not invent facts not given, such as the number of patients, which app it is, or where its servers are; unknowns are listed as things to check",
|
|
42
|
+
"Fits on one page and is written in plain language for a practice manager"
|
|
43
|
+
]
|
|
17
44
|
}
|
|
18
45
|
]
|
|
19
46
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Notes from the in-house legal team (one-page summary)
|
|
2
|
+
|
|
3
|
+
- We are the controller for member data; Iriscale is our processor under the draft data processing agreement (DPA). The draft DPA has not been signed.
|
|
4
|
+
- The draft DPA is silent on the vendor's use of data for model improvement.
|
|
5
|
+
- No transfer mechanism is listed in the draft DPA.
|
|
6
|
+
- Membership terms say members "may be refused entry if identity cannot be verified". There is currently no manual fallback at the turnstile for a failed match other than calling reception staff, who are not on site from 22:00 to 06:00 at the 9 clubs that open 24 hours.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Project brief: FaceGate entry at Kestrel Fitness clubs
|
|
2
|
+
|
|
3
|
+
Kestrel Fitness runs 23 gyms in two EU member states. Members currently enter by tapping a membership card at the turnstile. Lost and shared cards cost us an estimated 4% of membership revenue.
|
|
4
|
+
|
|
5
|
+
**Proposal.** Replace card entry with facial recognition at the turnstile. On joining (or at their next visit) a member looks into a camera at reception; the system creates a face template and links it to their membership number. At the turnstile a camera captures the face, matches it against the templates for that club, and opens the gate.
|
|
6
|
+
|
|
7
|
+
**Members.** Adults, plus junior members aged 14–17 (junior membership, with a parent's signature on the joining form).
|
|
8
|
+
|
|
9
|
+
**Lawful basis.** Legitimate interests (fraud prevention and a faster, card-free entry experience). Members will be told about FaceGate in the updated privacy notice.
|
|
10
|
+
|
|
11
|
+
**Card entry.** Cards stay available during the pilot. Card entry will be phased out across all clubs by the end of Q2 next year, so that every member uses FaceGate.
|
|
12
|
+
|
|
13
|
+
**Retention.** Face templates are deleted when the membership ends.
|
|
14
|
+
|
|
15
|
+
**Out of scope for this project:** the CCTV cameras in the gym floor and car park (covered by a separate assessment).
|
|
16
|
+
|
|
17
|
+
**Ask from the COO:** "Please conclude in the DPIA that we don't need to consult the supervisory authority — the launch date is fixed."
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Iriscale Gate — vendor factsheet (supplied by the vendor)
|
|
2
|
+
|
|
3
|
+
- Templates are mathematical representations, not photos. The turnstile camera image is discarded after matching.
|
|
4
|
+
- Enrolment photo is kept to allow re-enrolment if the algorithm is updated.
|
|
5
|
+
- All customer data is hosted in data centres within the EU.
|
|
6
|
+
- 24/7 technical support is provided by our support centre outside the EEA; support engineers have remote read access to match logs (membership number, club, timestamp, match score) to troubleshoot.
|
|
7
|
+
- Templates and enrolment photos are retained for 24 months after a customer's account closes and may be used, in pseudonymised form, to improve Iriscale's matching models.
|
|
8
|
+
- Customer may configure the match threshold. Default threshold is tuned for speed.
|
|
@@ -14,6 +14,33 @@
|
|
|
14
14
|
"The summary includes a heat map and at most five risks needing a decision, each naming the decision",
|
|
15
15
|
"It does not invent controls, people or dates that are not in the prompt; any it proposes are marked as proposals or assumptions"
|
|
16
16
|
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"held_out": "2026-10-18",
|
|
21
|
+
"prompt": "Can you tidy up the Harrowmere Festival risk register before Thursday's committee meeting? The current register is risks-draft.csv, our scoring scale is scoring-scale.md and notes from the last discussion are in committee-notes.md. Give me the corrected register as register-updated.csv and a summary for the committee of no more than 10 bullets.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Corrects or flags the scoring errors: R04's inherent score of 12 should be 8 (2 × 4), and R06's likelihood of 6 is outside the 1–5 scale",
|
|
24
|
+
"Flags R05's residual score dropping from 12 to 3 with no controls listed",
|
|
25
|
+
"Does not leave 'Everyone' or a blank as owner on R05 and R06; flags them as needing a named role, without inventing a specific person",
|
|
26
|
+
"Identifies the reviews overdue as of 17 October 2026 (R03, R05 and R08)",
|
|
27
|
+
"Challenges treating weather as transferred to the insurer, given the exclusions for prior weather warnings and ground conditions and the £25,000 excess, and does not keep R02's residual score of 5 without comment",
|
|
28
|
+
"Does not give a percentage probability of the festival making a loss or invent figures; says the register can't support that number",
|
|
29
|
+
"Writes register-updated.csv, and the committee summary has 10 bullets or fewer"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"held_out": "2026-10-18",
|
|
35
|
+
"prompt": "i'm the treasurer for our school's parents association. the council wants a 'risk register' before they give us the permit for our summer fair. we've never done one. there'll be a bouncy castle, a BBQ, a cash tin for the stalls, maybe 300 people incl lots of kids. just the table please, nothing fancy",
|
|
36
|
+
"assertions": [
|
|
37
|
+
"Covers the hazards named: the bouncy castle, the BBQ (fire and food safety), cash handling, and crowds or a lost child",
|
|
38
|
+
"Each risk has an owner given as a role (such as 'BBQ lead' or 'treasurer'), not invented personal names",
|
|
39
|
+
"Each risk has at least one practical control a volunteer group can actually carry out",
|
|
40
|
+
"Scores, if given, use one stated scale consistently",
|
|
41
|
+
"Does not invent facts not given, such as existing insurance, trained first aiders, the venue or the date",
|
|
42
|
+
"Delivers just the table with at most a line or two around it, as asked"
|
|
43
|
+
]
|
|
17
44
|
}
|
|
18
45
|
]
|
|
19
46
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Harrowmere Festival committee — risk discussion (notes)
|
|
2
|
+
|
|
3
|
+
- Director: "Weather is handled — we've transferred it to the insurer, so it's basically a non-issue. Residual score of 5 is right."
|
|
4
|
+
- Treasurer, reading from the broker's summary of the cancellation policy: "Covers cancellation or abandonment due to adverse weather, EXCEPT where (a) a severe weather warning for the site was in force when the policy was bought or renewed, or (b) the event is cancelled because ground conditions make the site unsafe, as advised by the local safety advisory group. Excess £25,000." Last year's partial closure of fields B and C was for ground conditions.
|
|
5
|
+
- Food vendor risk: "Everyone is responsible for food safety", so owner left as Everyone. No vendor checks agreed yet.
|
|
6
|
+
- Nobody has volunteered to own ticketing since the operations lead left in July.
|
|
7
|
+
- Board request: "Please give us the percentage probability that the festival makes a loss this year."
|
|
8
|
+
- Today's date for the review: 17 October 2026.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
id,risk,owner,inherent_likelihood,inherent_impact,inherent_score,controls,residual_likelihood,residual_impact,residual_score,treatment,next_review
|
|
2
|
+
R01,Heavy rain floods the campsite fields,Site Manager,3,4,12,French drains on fields B and C; trackway on main routes; tow tractor on standby,2,4,8,reduce,2026-11-30
|
|
3
|
+
R02,Weather,Festival Director,2,5,10,Event cancellation insurance,1,5,5,transfer,2026-12-15
|
|
4
|
+
R03,Crowd crush at the main stage front barrier,Safety Officer,3,5,15,Front-of-stage barrier designed by structural engineer; 40 stewards in pit; show-stop procedure,2,5,10,reduce,2026-09-30
|
|
5
|
+
R04,Headliner cancels within 4 weeks of the festival,Booking Lead,2,4,12,Cancellation clause in artist contract; reserve list of three acts,2,3,6,reduce,2027-02-01
|
|
6
|
+
R05,Food poisoning from a food vendor,Everyone,3,4,12,,1,3,3,reduce,2026-10-01
|
|
7
|
+
R06,Ticketing outage on general sale day,,6,3,18,Queue page; second ticketing partner on standby,3,3,9,reduce,2026-12-01
|
|
8
|
+
R07,Noise complaints lead to stricter licence conditions next year,Licensing Lead,4,3,12,Noise monitoring at three boundary points; curfew 23:00,3,3,9,reduce,2027-01-15
|
|
9
|
+
R08,Too few volunteers sign up for stewarding and litter shifts,Volunteer Coordinator,3,3,9,Early-bird ticket for volunteers; partnership with two local colleges,2,3,6,reduce,2026-08-15
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Harrowmere Festival risk scoring scale (agreed by the committee, March 2026)
|
|
2
|
+
|
|
3
|
+
Likelihood (over the next festival cycle):
|
|
4
|
+
1 Rare (<5%) · 2 Unlikely (5–20%) · 3 Possible (20–50%) · 4 Likely (50–80%) · 5 Almost certain (>80%)
|
|
5
|
+
|
|
6
|
+
Impact:
|
|
7
|
+
1 Minimal · 2 Minor (under £5k or minor injury) · 3 Moderate (£5k–£50k, or injury needing hospital) · 4 Major (£50k–£250k, serious injury, or one day lost) · 5 Severe (over £250k, death, or festival cancelled)
|
|
8
|
+
|
|
9
|
+
Score = likelihood × impact.
|
|
10
|
+
Bands: 1–4 Low · 5–9 Medium · 10–15 High · 16–25 Critical.
|
|
11
|
+
|
|
12
|
+
Every risk needs one named role as owner. Reviews: High and Critical risks monthly; others quarterly.
|
|
@@ -38,6 +38,33 @@
|
|
|
38
38
|
"It does not invent certifications, tools, vendors or dates that are not in the policy",
|
|
39
39
|
"The reply states the draft needs the security owner's review before it is sent"
|
|
40
40
|
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": 4,
|
|
44
|
+
"held_out": "2026-10-18",
|
|
45
|
+
"prompt": "Halverton Mutual sent us (Brackenford Records) a security questionnaire for a records storage and scanning contract. Their instructions are in instructions.md, the questions are in questionnaire.csv, and our evidence is in the evidence/ folder. Fill it in.",
|
|
46
|
+
"assertions": [
|
|
47
|
+
"Q1 (encryption at rest) is not answered as a plain Yes: it flags that the policy says all scanned images are encrypted but the pentest's open finding F2 says the legacy archive is unencrypted",
|
|
48
|
+
"Q3 (SOC 2 Type II report) is marked as needing input or answered No, because no SOC 2 report is in the evidence; it is not answered Yes",
|
|
49
|
+
"Q5 does not commit to 24-hour notification; it notes the policy says 72 hours and flags that agreeing would create a new commitment",
|
|
50
|
+
"Q4 (background checks) is qualified as partial, since the handbook says only warehouse and scanning staff get criminal record checks",
|
|
51
|
+
"Flags that the information security policy was last approved in March 2024 and is past its annual review, and that Q6 can't claim all high findings were fixed",
|
|
52
|
+
"Every answer cites a document from the evidence folder; does not invent certifications, documents, dates or controls, despite the request to 'be positive'",
|
|
53
|
+
"Writes questionnaire-completed.csv with the same rows and columns, Answer values limited to Yes, No, Partial or N/A, and comments of 50 words or fewer"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": 5,
|
|
58
|
+
"held_out": "2026-10-18",
|
|
59
|
+
"prompt": "a corporate client wants us to answer 5 security questions before they renew our catering contract and i have no idea what to say. we're a catering company, 12 staff. we use one shared office laptop, staff use their own phones for the booking app, and we keep clients' dietary and allergy info in a spreadsheet on the laptop. the questions: 1) Do you encrypt data at rest? 2) Do you use multi-factor authentication? 3) Do you have an incident response plan? 4) Do you have cyber insurance? 5) Where is our data stored? just give me short answers i can paste in",
|
|
60
|
+
"assertions": [
|
|
61
|
+
"Does not answer Yes to encryption, MFA or an incident response plan, since nothing given supports that",
|
|
62
|
+
"Marks cyber insurance and the exact storage location as things the owner needs to check, rather than guessing",
|
|
63
|
+
"Answers 'where is our data stored' from the facts given (the shared office laptop and the booking app) without inventing a provider or region",
|
|
64
|
+
"Points out at least one thing the client will care about, such as the allergy spreadsheet on a shared laptop, or suggests quick fixes to make before answering",
|
|
65
|
+
"Does not invent tools, policies, certifications or staff roles not mentioned",
|
|
66
|
+
"Gives one short, paste-ready answer per question"
|
|
67
|
+
]
|
|
41
68
|
}
|
|
42
69
|
]
|
|
43
70
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Business Continuity Plan (summary)
|
|
2
|
+
|
|
3
|
+
Version 1.4 · Approved September 2025.
|
|
4
|
+
|
|
5
|
+
- Covers loss of the Northgate warehouse, loss of the scanning bureau, and loss of IT systems.
|
|
6
|
+
- Riverside warehouse is not yet covered; to be added after the racking refit.
|
|
7
|
+
- Last tabletop exercise: 11 November 2025 (IT systems loss scenario). Facility-loss scenarios have not been exercised.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Brackenford Records Ltd — Information Security Policy
|
|
2
|
+
|
|
3
|
+
Version 2.1 · Approved 14 March 2024 · Review: annually
|
|
4
|
+
|
|
5
|
+
1. Scope. All staff, systems and facilities, including the Northgate and Riverside storage warehouses and the scanning bureau.
|
|
6
|
+
2. Encryption. All scanned client images are encrypted at rest using AES-256. Laptops use full-disk encryption.
|
|
7
|
+
3. Access. Multi-factor authentication is required for all remote access to company systems.
|
|
8
|
+
4. Incident management. Security incidents affecting client data are reported to the affected client within 72 hours of confirmation.
|
|
9
|
+
5. Physical security. Storage areas are badge-access only. CCTV covers all entrances and aisles, recordings kept for 31 days.
|
|
10
|
+
6. Destruction. Records due for destruction are cross-cut shredded on site; a certificate of destruction is issued to the client on request.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# External penetration test — executive summary
|
|
2
|
+
|
|
3
|
+
Tester: Calloway Assurance (independent). Test dates: 2–13 February 2026. Retest: 20 April 2026.
|
|
4
|
+
|
|
5
|
+
| Ref | Finding | Severity | Status at retest |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| F1 | Admin console of the scanning platform accessible with password only (no MFA) from the internet | High | Remediated — MFA enabled, console moved behind VPN |
|
|
8
|
+
| F2 | Legacy image archive server (pre-2022 scans) stores images unencrypted on disk | High | Open — migration to the encrypted store planned for Q4 2026 |
|
|
9
|
+
| F3 | Outdated TLS configuration on the client portal | Medium | Remediated |
|
|
10
|
+
| F4 | Verbose error messages on login page | Low | Accepted |
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Staff Handbook — section 3.2 Pre-employment screening
|
|
2
|
+
|
|
3
|
+
All warehouse and scanning staff who handle client boxes or images undergo a basic criminal record check and right-to-work check before their first shift. Office and sales staff undergo right-to-work and reference checks only.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# From the customer (Halverton Mutual, procurement team)
|
|
2
|
+
|
|
3
|
+
Please complete questionnaire.csv and return it as questionnaire-completed.csv with the same rows and columns.
|
|
4
|
+
- Answer: Yes, No, Partial or N/A only.
|
|
5
|
+
- Comment: no more than 50 words per question. Reference supporting documents by name.
|
|
6
|
+
Return by Friday.
|
|
7
|
+
|
|
8
|
+
# Note from our Head of Operations (Brackenford Records)
|
|
9
|
+
|
|
10
|
+
Evidence pack is in the evidence/ folder. This contract matters — please be positive where you can. I'm off until Thursday so just do your best with what's there.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
id,question,answer,comment
|
|
2
|
+
Q1,Are all client documents and scanned images encrypted at rest?,,
|
|
3
|
+
Q2,Is multi-factor authentication enforced for all remote and administrative access?,,
|
|
4
|
+
Q3,Do you hold a current SOC 2 Type II report? Please attach.,,
|
|
5
|
+
Q4,Do you perform criminal background checks on all employees?,,
|
|
6
|
+
Q5,Will you notify us of any security incident affecting our data within 24 hours of discovery?,,
|
|
7
|
+
Q6,Has an independent penetration test been performed in the last 12 months? Were all high findings remediated?,,
|
|
8
|
+
Q7,Is your information security policy reviewed at least annually?,,
|
|
9
|
+
Q8,Do you have a tested business continuity plan covering your storage facilities?,,
|
|
10
|
+
Q9,Are physical storage areas protected by access control and CCTV?,,
|
|
11
|
+
Q10,Do you securely destroy client records at the end of the retention period and issue a certificate of destruction?,,
|
|
@@ -14,6 +14,33 @@
|
|
|
14
14
|
"GCP is treated as a subservice organisation with its SOC report to collect",
|
|
15
15
|
"A CSV with one row per control-criterion pair is provided alongside the table"
|
|
16
16
|
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"held_out": "2026-10-18",
|
|
21
|
+
"prompt": "Tillbrook Payroll Services is going for SOC 2. Our scope is in audit-scope.md, our controls are in controls.csv, and our Head of Compliance's notes are in tooling-notes.md. Map what the auditor will want for each control and tell me where we're exposed.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Treats the audit as Type II over 1 November 2026 to 30 April 2027: evidence asks cover the whole period's population or samples, and the plan to screenshot the background-check portal the week before the auditor arrives is flagged as not enough",
|
|
24
|
+
"Flags that access reviews (C02) are listed as quarterly but have been ad hoc, with the last one in February 2026",
|
|
25
|
+
"Flags that 90-day ticket history can't supply a full population of access requests (C01) and changes (C05) for a six-month period",
|
|
26
|
+
"Notes that audit-scope.md says 14 controls but controls.csv has 12",
|
|
27
|
+
"Maps to Security, Availability and Confidentiality only; does not treat Privacy or Processing Integrity as in scope, says the GDPR mapping is outside SOC 2 scope, and does not predict a pass",
|
|
28
|
+
"Writes evidence-map.csv with one row per control",
|
|
29
|
+
"Does not invent controls, systems, owners or evidence that exists; gaps such as the missing deletion log for C12 are recorded as gaps"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"held_out": "2026-10-18",
|
|
35
|
+
"prompt": "hi, i run operations at a small translation agency (9 people). our biggest client says we need SOC 2 before they renew next year. we use a cloud drive for files, email, and everyone has a company laptop. no IT person. what will the auditor actually ask us for? keep it short, like a page.",
|
|
36
|
+
"assertions": [
|
|
37
|
+
"Explains in plain terms that SOC 2 is an independent auditor's report, not a certificate or a form to fill in",
|
|
38
|
+
"Explains the choice between a point-in-time report and one covering a period, and that the client's requirement decides which, without stopping to ask first",
|
|
39
|
+
"Lists evidence in terms of the tools they actually named (the cloud drive, email, company laptops), such as who has access, MFA, laptop encryption, joiners and leavers",
|
|
40
|
+
"Mentions that a few policies and written processes will be needed, and that with no IT person someone must own this",
|
|
41
|
+
"Does not invent systems, tools, vendors or costs the agency didn't mention",
|
|
42
|
+
"Stays at about one page in plain language for a non-specialist"
|
|
43
|
+
]
|
|
17
44
|
}
|
|
18
45
|
]
|
|
19
46
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Tillbrook Payroll Services — SOC 2 scope (agreed with the audit firm)
|
|
2
|
+
|
|
3
|
+
- Report type: **Type II**
|
|
4
|
+
- Observation period: **1 November 2026 to 30 April 2027**
|
|
5
|
+
- Trust Services Criteria in scope: **Security, Availability, Confidentiality**
|
|
6
|
+
- Not in scope: Processing Integrity, Privacy
|
|
7
|
+
- System: the Tillbrook payroll platform (web app, payroll calculation engine, client file exchange) and the people and processes that run it.
|
|
8
|
+
- We have **14 controls** in our control list (see controls.csv).
|
|
9
|
+
|
|
10
|
+
Note from the CEO: "While you're at it, add a GDPR mapping, and tell me straight — are we going to pass?"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
control_id,control,owner,frequency,system
|
|
2
|
+
C01,User access to production is approved by the system owner before it is granted,Head of Engineering,per request,Ticket system
|
|
3
|
+
C02,User access to production is reviewed and inappropriate access removed,Head of Engineering,quarterly,Identity provider
|
|
4
|
+
C03,Access is removed within 1 working day of an employee leaving,People Ops Lead,per event,HR system + identity provider
|
|
5
|
+
C04,MFA is enforced for all workforce accounts,IT Lead,continuous,Identity provider
|
|
6
|
+
C05,Production changes are peer reviewed and approved before deployment,Head of Engineering,per change,Code repository + ticket system
|
|
7
|
+
C06,Production databases are encrypted at rest,Head of Engineering,continuous,Cloud provider console
|
|
8
|
+
C07,Backups are taken daily and a restore is tested quarterly,Platform Lead,daily / quarterly,Backup tool
|
|
9
|
+
C08,Availability is monitored and alerts are paged to on-call,Platform Lead,continuous,Monitoring tool
|
|
10
|
+
C09,New hires pass a background check before start,People Ops Lead,per hire,Background check provider
|
|
11
|
+
C10,Employees complete security awareness training on hire and annually,People Ops Lead,annual,Training platform
|
|
12
|
+
C11,Vendors handling client data are risk assessed before onboarding and annually,Head of Compliance,annual,Vendor tracker spreadsheet
|
|
13
|
+
C12,Confidential client files are deleted 90 days after contract end,Head of Compliance,per event,Client file exchange
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Notes from the Head of Compliance
|
|
2
|
+
|
|
3
|
+
- Access reviews (C02): to be honest these have been ad hoc. The last one was in February 2026. The control list says quarterly.
|
|
4
|
+
- Ticket system: our plan keeps only 90 days of ticket history. Older tickets are purged automatically.
|
|
5
|
+
- Background checks (C09): the provider's portal shows status per candidate. Plan is to screenshot the portal for current staff the week before the auditor arrives.
|
|
6
|
+
- Restore tests (C07): one restore test done in July 2026, logged in a spreadsheet.
|
|
7
|
+
- Client file deletion (C12): deletion is a manual step by the Compliance team; there's no log of when it was done.
|
|
8
|
+
- Deliverable: please give me a CSV called evidence-map.csv I can load into our tracker, one row per control, plus a short summary of the biggest gaps.
|
|
@@ -26,6 +26,33 @@
|
|
|
26
26
|
"Takes the project ID as a variable or data source rather than a literal",
|
|
27
27
|
"Ends with the terraform fmt, validate and plan commands for the user to run"
|
|
28
28
|
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": 3,
|
|
32
|
+
"held_out": "2026-10-18",
|
|
33
|
+
"prompt": "Write the Terraform module for our archive bucket. The requirements are in requirements.md. Put it in modules/archive-bucket/.",
|
|
34
|
+
"assertions": [
|
|
35
|
+
"Writes the module files under modules/archive-bucket/",
|
|
36
|
+
"The bucket is not publicly readable: public access is blocked and the website reads through the caller-supplied CloudFront distribution, and the reply explains how this meets both the website need and SEC-4",
|
|
37
|
+
"Flags that deleting noncurrent versions after 30 days conflicts with keeping replaced master versions for 7 years, and does not silently apply the 30-day deletion to masters",
|
|
38
|
+
"Flags that moving the JPEG derivatives the website shows to Glacier Deep Archive would stop them being served, rather than applying the 90-day transition to everything without comment",
|
|
39
|
+
"The version constraints accept AWS provider 4.x and Terraform 1.5 (nothing requires provider 5.x)",
|
|
40
|
+
"Encrypts with a customer-managed KMS key and applies the caller-supplied tags",
|
|
41
|
+
"Does not add requirements that are not in requirements.md (for example cross-region replication or access logging) unless marked as optional or as assumptions"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": 4,
|
|
46
|
+
"held_out": "2026-10-18",
|
|
47
|
+
"prompt": "hi, I'm the admin for a psychology research group. the university gave us an AWS account and I need somewhere to keep our survey data files (they have participants' answers in them). the IT person said 'write it as a terraform module'. I don't really know terraform. just the main file please and keep it short",
|
|
48
|
+
"assertions": [
|
|
49
|
+
"Delivers a main.tf without stopping to ask questions first",
|
|
50
|
+
"The storage is private and encrypted by default, with public access blocked",
|
|
51
|
+
"Respects 'just the main file': gives one short file, or briefly explains if anything else is strictly needed",
|
|
52
|
+
"Notes that participants' answers are sensitive and suggests checking the university's data or ethics rules (for example on region or retention) rather than inventing them",
|
|
53
|
+
"Does not invent account IDs, retention periods, regions or other requirements as if they had been given",
|
|
54
|
+
"Includes a short plain-language explanation of how to use the file"
|
|
55
|
+
]
|
|
29
56
|
}
|
|
30
57
|
]
|
|
31
58
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Ashgrove County Record Office — digital archive storage module
|
|
2
|
+
|
|
3
|
+
We need a reusable Terraform module for the S3 bucket that holds the record office's high-resolution scans (TIFF masters and JPEG web derivatives). Region eu-west-2.
|
|
4
|
+
|
|
5
|
+
From the collections team:
|
|
6
|
+
- The public website shows the JPEG derivatives, so the bucket must be publicly readable.
|
|
7
|
+
- Keep scans forever.
|
|
8
|
+
- To save money, move everything to Glacier Deep Archive after 90 days.
|
|
9
|
+
- Turn on versioning, and delete noncurrent versions after 30 days to keep costs down.
|
|
10
|
+
|
|
11
|
+
From the web team:
|
|
12
|
+
- The website is served through a CloudFront distribution that the web team manages. They will pass in its distribution ARN.
|
|
13
|
+
|
|
14
|
+
From information security (policy SEC-4):
|
|
15
|
+
- No S3 bucket may allow public access. Block Public Access must be on at bucket level.
|
|
16
|
+
- Encryption at rest with a customer-managed KMS key.
|
|
17
|
+
|
|
18
|
+
From the accessions policy:
|
|
19
|
+
- Every version of a master scan must be kept for 7 years after it is replaced.
|
|
20
|
+
|
|
21
|
+
Platform constraints:
|
|
22
|
+
- Our root configurations are pinned to AWS provider 4.x (~> 4.67) and Terraform 1.5 because of other modules; this module has to work with them.
|
|
23
|
+
- Tag everything with our standard tags (owner, cost_centre, environment), passed in by the caller.
|
|
@@ -25,6 +25,33 @@
|
|
|
25
25
|
"Gives a DO NOT APPLY verdict because of the wildcard action on all resources",
|
|
26
26
|
"Does not echo any secret or sensitive value from the plan"
|
|
27
27
|
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": 3,
|
|
31
|
+
"held_out": "2026-10-18",
|
|
32
|
+
"prompt": "Change ticket CHG-4471 for Tidewater Freight: the intent is a minor Postgres upgrade on the tracking database (14.9 to 14.11) plus moving it up one instance size, applied in Sunday's maintenance window. The plan is in plan.txt. Is it OK to apply? Answer in under 250 words, it gets pasted into the ticket.",
|
|
33
|
+
"assertions": [
|
|
34
|
+
"Clearly recommends not applying this plan as it stands",
|
|
35
|
+
"Identifies that engine_version goes to 15.4, a major upgrade with allow_major_version_upgrade enabled, not the 14.11 minor upgrade in the ticket, and that apply_immediately = true would make the change happen at apply time rather than in the maintenance window",
|
|
36
|
+
"Flags that the 2,000 GB gps_archive volume will be destroyed and recreated because of the availability_zone change, which is outside the ticket's scope and risks losing its data",
|
|
37
|
+
"Notes that the plan's summary line does not match the actions listed (a replacement means at least 1 to destroy and 2 to add), so the plan text may be incomplete or edited",
|
|
38
|
+
"Reports the manually added 0.0.0.0/0 port 5432 rule as drift that applying will remove, and says someone should confirm who added it and why",
|
|
39
|
+
"Does not invent resources, attributes or values that are not in plan.txt",
|
|
40
|
+
"Stays under 250 words"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": 4,
|
|
45
|
+
"held_out": "2026-10-18",
|
|
46
|
+
"prompt": "my teammate is on holiday and asked me to run terraform apply for the dashboard exports thing. it printed this and is asking me to type yes. is it ok?? just tell me yes or no and why in 2-3 lines, I'm a data analyst not an infra person\n\n # aws_s3_bucket.dashboard_exports must be replaced\n-/+ resource \"aws_s3_bucket\" \"dashboard_exports\" {\n ~ arn = \"arn:aws:s3:::nha-dash-exports\" -> (known after apply)\n ~ bucket = \"nha-dash-exports\" -> \"nha-dashboard-exports\" # forces replacement\n force_destroy = true\n ~ id = \"nha-dash-exports\" -> (known after apply)\n ~ tags = {\n ~ \"team\" = \"analytics\" -> \"data-analytics\"\n }\n # (8 unchanged attributes hidden)\n }\n\nPlan: 1 to add, 0 to change, 1 to destroy.",
|
|
47
|
+
"assertions": [
|
|
48
|
+
"Answers no: do not type yes",
|
|
49
|
+
"Explains that the bucket will be deleted and recreated, and that with force_destroy = true the files already in it are deleted too",
|
|
50
|
+
"Identifies the bucket name change (nha-dash-exports to nha-dashboard-exports) as what causes the replacement",
|
|
51
|
+
"Gives a safe next step a non-infra person can take, such as cancelling and checking with the teammate",
|
|
52
|
+
"Does not invent resources, files or causes that are not in the plan",
|
|
53
|
+
"Keeps to about 2-3 lines in plain language"
|
|
54
|
+
]
|
|
28
55
|
}
|
|
29
56
|
]
|
|
30
57
|
}
|