{"owner":"fleetdm","repo":"fleet","hasSkills":true,"totalSkillsCount":376,"totalTokensCount":128440,"categories":["anthropic-skill","root-instruction","claude-rule","plugin-manifest","subagent-persona","command-prompt"],"hasMcp":false,"mcpConfig":null,"found":[".claude/skills/aikido-tickets/SKILL.md",".claude/skills/bump-migration/SKILL.md",".claude/skills/cherry-pick/SKILL.md",".claude/skills/command-palette/SKILL.md",".claude/skills/ai-profile-test/SKILL.md",".claude/skills/api-design-check/SKILL.md",".claude/skills/content-style/SKILL.md",".claude/skills/fix-ci/SKILL.md",".claude/skills/fleet-case-study-formatting/SKILL.md",".claude/skills/fix-sql-parser/SKILL.md",".claude/skills/find-related-tests/SKILL.md",".claude/skills/fleet-article-formatting/SKILL.md",".claude/skills/fleet-gitops/SKILL.md",".claude/skills/fleet-guide-formatting/SKILL.md",".claude/skills/handbook-pr/SKILL.md",".claude/skills/lint/SKILL.md",".claude/skills/new-endpoint/SKILL.md",".claude/skills/new-fma/SKILL.md",".claude/skills/new-migration/SKILL.md",".claude/skills/openspec-apply-change/SKILL.md",".claude/skills/openspec-archive-change/SKILL.md",".claude/skills/openspec-explore/SKILL.md",".claude/skills/openspec-propose/SKILL.md",".claude/skills/project/SKILL.md",".claude/skills/push-reference-docs/SKILL.md",".claude/skills/release-retro/SKILL.md",".claude/skills/review-pr/SKILL.md",".claude/skills/spec-story/SKILL.md",".claude/skills/test/SKILL.md",".claude/skills/tier-modes/SKILL.md",".claude/skills/vuln-triage/SKILL.md",".claude/skills/who-blocks-this-pr/SKILL.md","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md","cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md","AGENTS.md",".claude/CLAUDE.md","tools/README.md",".claude/agents/fleet-security-auditor.md",".claude/agents/frontend-reviewer.md",".claude/agents/go-reviewer.md",".claude/rules/fleet-api.md",".claude/rules/fleet-database.md",".claude/rules/fleet-frontend.md",".claude/rules/fleet-go-backend.md",".claude/rules/fleet-orbit.md","tools/api/README.md","tools/apm-elastic/README.md","tools/backup_db/README.md","tools/calendar/README.md","tools/charts-backfill/README.md","tools/charts-collect/README.md","tools/custom-package-parser/README.md","tools/custom-package-parser/tests.md","tools/desktop-rate-limit/README.md","tools/dibble/README.md","tools/file-server/README.md","tools/fleet-slackbot/README.md","tools/fleet-slackbot/package.json","tools/fleet-slackbot/render.yaml","tools/fleet-slackbot/slack-manifest.json","tools/fleetctl-docker/README.md","tools/fleetctl-npm/README.md","tools/fleetctl-npm/package.json","tools/fleetd-linux/README.md","tools/github-manage/README.md","tools/gitops-auto-complete/README.md","tools/gitops-auto-complete/generated-schema.json","tools/hangar/README.md","tools/kubequery/README.md","tools/migration-cleanup/CHANGELOG.md","tools/migration-cleanup/README.md","tools/msal/README.md","tools/mysql-replica-testing/README.md","tools/oncall/README.md","tools/osquery-agent-options/README.md","tools/osquery-testing/README.md","tools/osquery/README.md","tools/qacheck/README.md","tools/redis-stress/README.md","tools/release/README.md","tools/saml/README.md","tools/screencap/README.md","tools/sentry-self-hosted/README.md","tools/signoz/README.md","tools/signoz/database_custom_dashboard.json","tools/signoz/host_cache_dashboard.json","tools/signoz/http_errors_dashboard.json","tools/team-builder/README.md","tools/telemetry/README.md","tools/telemetry/otel-collector-config.yaml","tools/terraform/README.md","tools/terraform/generator.yaml","tools/terraform/openapi.json","tools/test-certs/README.md","tools/test-orbit-mtls/README.md","tools/tuf/README.md","tools/upgrade/README.md","tools/webhook/README.md",".claude/commands/opsx/apply.md",".claude/commands/opsx/archive.md",".claude/commands/opsx/explore.md",".claude/commands/opsx/propose.md",".claude/skills/spec-story/README.md","ee/tools/license/README.md","ee/tools/license/package.json","ee/tools/mdm/README.md","orbit/tools/windows/profiling_process.md","tools/android/cert-auth-server/README.md","tools/ci/helm-values/custom-annotations.yaml","tools/ci/helm-values/disable-fleet-tls.yaml","tools/ci/helm-values/enable-cloudsql-proxy.yaml","tools/ci/helm-values/enable-mysql-tls.yaml","tools/ci/helm-values/environments-scalar-values.yaml","tools/ci/helm-values/logger-firehose-accesssid.yaml","tools/ci/helm-values/logger-firehose-sts.yaml","tools/ci/helm-values/logger-pubsub.yaml","tools/hangar/frontend/package.json","tools/hangar/frontend/tsconfig.json","tools/loadtest/fleetd_labels/README.md","tools/loadtest/metrics/README.md","tools/loadtest/osquery/README.md","tools/loadtest/scripts_and_profiles/README.md","tools/loadtest/unified_queue/README.md","tools/mdm/apple/glossary-and-protocols.md","tools/mdm/apple/toggle-mdm-dev.md","tools/mdm/apple/troubleshooting.md","tools/mdm/assets/README.md","tools/mysql-tests/rds/README.md","tools/mysql-tests/rds/cf-template.yaml","tools/nvd/nvdvuln/README.md","tools/osquery/in-a-box/README.md","tools/percona/pmm/README.md","tools/percona/test/README.md","tools/redis-tests/elasticache/README.md","tools/redis-tests/elasticache/cf-template.yaml","tools/release/calendar-sync/README.md","tools/screencap/workflows/test.json","tools/seed_data/queries/README.md","tools/software/icons/README.md","tools/software/packages/README.md","tools/software/vulnerabilities/README.md","tools/tuf/status/README.md","tools/tuf/test/Fleetd-auto-update-test-guide.md","tools/tuf/test/README.md",".claude/skills/api-design-check/references/conventions.md",".claude/skills/content-style/references/content-types.md",".claude/skills/content-style/references/positioning.md",".claude/skills/content-style/references/style-rules.md",".claude/skills/fleet-article-formatting/assets/article-template.md",".claude/skills/fleet-case-study-formatting/assets/case-study-template.md",".claude/skills/fleet-case-study-formatting/references/canonical-examples.md",".claude/skills/fleet-gitops/references/profiles-android.md",".claude/skills/fleet-gitops/references/profiles-apple.md",".claude/skills/fleet-gitops/references/profiles-windows.md",".claude/skills/fleet-gitops/references/queries.md",".claude/skills/fleet-gitops/references/software.md",".claude/skills/fleet-gitops/scripts/validate.py",".claude/skills/fleet-guide-formatting/references/canonical-examples.md",".claude/skills/fleet-guide-formatting/references/template.md",".claude/skills/handbook-pr/scripts/check-handbook-diff.sh",".claude/skills/new-fma/references/identity-verification.md",".claude/skills/new-fma/references/queries.md",".claude/skills/new-fma/references/script-comments.md",".claude/skills/new-fma/references/validator-failures.md",".claude/skills/new-fma/references/windows-scripts.md",".claude/skills/new-fma/scripts/burn_ux.py",".claude/skills/new-fma/scripts/check_queries.sh",".claude/skills/new-fma/scripts/pe_info.py","ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json","ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json","ee/tools/puppet/fleetdm/CHANGELOG.md","ee/tools/puppet/fleetdm/CONTRIBUTING.md","ee/tools/puppet/fleetdm/README.md","ee/tools/puppet/fleetdm/hiera.yaml","ee/tools/puppet/fleetdm/metadata.json","orbit/pkg/table/ai_tools/README.md","server/vulnerabilities/nvd/tools/HOWTO.md","server/vulnerabilities/nvd/tools/README.md","tools/github-manage/pkg/ghapi/README.md","tools/github-manage/pkg/ghapi/TEST_SUMMARY.md","tools/mdm/apple/appmanifest/README.md","tools/mdm/apple/loadtest/README.md","tools/mdm/apple/macos-vm-auto-enroll/README.md","tools/mdm/apple/setupexperience/README.md","tools/mdm/migration/echo/README.md","tools/mdm/migration/jamf/README.md","tools/mdm/migration/kandji/README.md","tools/mdm/migration/mdmproxy/README.md","tools/mdm/migration/micromdm/README.md","tools/mdm/migration/simplemdm/README.md","tools/software/vulnerabilities/performance_test/README.md","ee/tools/puppet/fleetdm/data/common.yaml","tools/loadtest/metrics/runs/historical/README.md","tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json","tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md","tools/mdm/migration/micromdm/touchless/README.md","tools/software/vulnerabilities/performance_test/seeder/README.md","ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml","tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json","tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json","tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md","tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json","tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md","tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json","tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md","tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json","tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md","tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json","tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md","tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json","tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md","tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json","tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md","tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json","tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md","tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json","tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json","tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json","tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json","tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json","tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json","tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json","tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json","tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json","tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json","tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json","tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json","tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json","tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json","tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json","tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json","tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json","tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json","tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json","tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json","tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json","tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json","tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json","tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json","tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json","tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json","tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json","tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json","tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json","tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json","tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json","tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json","tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json","tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json","tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json","tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json","tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json","tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json","tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json","tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json","tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json","tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json","tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json","tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json","tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json","tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json","tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json","tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json","tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json","tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json","tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json","tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json","tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json","tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md","tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json","tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md","tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md","tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json","tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md","tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json","tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md","tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json","tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md","ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md"],"skills":{".claude/skills/aikido-tickets/SKILL.md":"---\nname: aikido-tickets\ndescription: Create GitHub issues in fleetdm/confidential for Aikido pen test findings. Use when asked to \"create aikido tickets\", \"aikido ticket\", or \"create pen test tickets\".\nallowed-tools: Bash(gh *), Bash(jq *), Read, Grep, Glob, Agent, Write\nmodel: sonnet\neffort: high\n---\n\n# Create Aikido Pen Test Tickets\n\nCreate GitHub issues in `fleetdm/confidential` for Aikido penetration test findings.\n\n## Prerequisites\n\nBefore starting, walk the user through these steps:\n\n### 1. Export the Aikido report\n\nThe user needs to download the pen test report PDF from Aikido:\n\n1. Go to the Aikido assessment page (e.g., `app.aikido.dev/ai-pentests/projects/.../assessments/.../issues`)\n2. Click the purple **\"Download Report\"** button in the top-right corner\n3. Select **\"Detailed Auditor Report\"** (this contains every finding with technical details and remediation steps)\n4. Click **Continue** and save the downloaded PDF\n5. Provide the path to the downloaded PDF\n\n### 2. GitHub project board permissions\n\nAdding issues to project boards requires the `project` scope on the GitHub CLI token. Test by running:\n\n```bash\ngh project list --owner fleetdm --limit 1\n```\n\nIf this fails with a scope error, the user needs to run interactively:\n\n```bash\ngh auth refresh -s project -h github.com\n```\n\n**Alternative:** If the user cannot or prefers not to grant project scope, skip the project board step. The issues will still be created with correct labels and assignment. The user (or their manager) can manually drag them into the correct project board column afterward.\n\n## Inputs\n\nAsk the user for these if not provided:\n\n- **Pen test PDF report path:** Path to the downloaded Aikido detailed auditor report PDF\n- **PT ID(s):** Which PT-* findings to create tickets for (specific IDs, a range, or \"all\")\n- **Team:** Which team owns the findings (determines labels, project board, and parent story)\n- **Assignee:** GitHub username to assign the tickets to\n- **Parent story:** The confidential issue number that tracks these findings (e.g., #16715)\n\n## Teams and project boards\n\n| Team | Label | GitHub Project |\n|------|-------|----------------|\n| Orchestration | `#g-orchestration` | https://github.com/orgs/fleetdm/projects/71/ |\n| Supply Chain | `#g-supply-chain` | https://github.com/orgs/fleetdm/projects/97/ |\n| MDM | `#g-mdm` | https://github.com/orgs/fleetdm/projects/58/ |\n| Software | `#g-software` | https://github.com/orgs/fleetdm/projects/70/ |\n| First Impressions | `#g-first-impressions` | https://github.com/orgs/fleetdm/projects/105/ |\n\nIf the user specifies a team not listed here, ask for the team label and project URL/number.\n\n## Ticket format\n\n### Title\n```\nAikido-PT-{number} [{SEVERITY}]: {concise title from the finding}\n```\n\n### Body structure\n\n```markdown\n## {concise title}\n\n{1-2 sentence explanation of what is wrong}\n\nSee full details below.\n\n### Attack path\n\n{Concise but complete description of how an attacker exploits this vulnerability}\n\n### Fix\n\n**Option 1 (recommended):** {Best fix approach described concisely}\n\n{Only add Option 2, Option 3 etc. if there are genuinely different viable approaches. If one fix is clearly best, only list that one.}\n\n---\n\n**Aikido ref:** PT-{number} | CVSS {score} | `{primary affected file}`\n**Parent story:** #{parent_story_number}\n\n---\n\n<details>\n<summary>Aikido pen test details (PT-{number})</summary>\n\n{Full content from the Aikido PDF report for this finding, including:}\n### Description\n{original description}\n\n### Business impact\n{original business impact}\n\n### How to exploit\n{all exploit steps with code blocks}\n\n### Remediation\n{all remediation bullets from the report}\n\n### References\n{CVSS score and vector}\n\n</details>\n```\n\n## Process\n\n1. **Read the finding** from the pen test PDF report. Locate each finding by its `PT-{N}` header rather than guessing page numbers. Scan for `2.3.X PT-{N} - {Title}` headers in the detailed findings section (starts around page 15). Read pages in chunks to find the right section.\n\n2. **Write the ticket body** following the format above:\n   - The top section (title, explanation, attack path, fix) is YOUR synthesis of the finding, written concisely\n   - The foldable `<details>` section at the bottom contains the ORIGINAL Aikido report content verbatim\n\n3. **Write the body to a temp file and create the issue:**\n   ```bash\n   # Write body to temp file to avoid shell escaping issues\n   cat > /tmp/aikido-pt-{N}.md << 'BODY'\n   {body content}\n   BODY\n\n   gh issue create --repo fleetdm/confidential \\\n     --title \"Aikido-PT-{N} [{SEVERITY}]: {title}\" \\\n     --assignee {assignee} \\\n     --label \"bug,~security,~vulnerability-management,{team_label},p3\" \\\n     --body-file /tmp/aikido-pt-{N}.md\n   ```\n\n4. **Add to the correct project board and set status to Ready:**\n   ```bash\n   # Get project node ID\n   PROJECT_NODE_ID=$(gh api graphql -f query='{ organization(login: \"fleetdm\") { projectV2(number: {project_number}) { id } } }' | jq -r '.data.organization.projectV2.id')\n\n   # Add to project\n   ITEM_ID=$(gh project item-add {project_number} --owner fleetdm --url {issue_url} --format json | jq -r '.id')\n\n   # Get Status field ID and Ready option ID\n   READY_INFO=$(gh project field-list {project_number} --owner fleetdm --format json | jq '.fields[] | select(.name == \"Status\")')\n   STATUS_FIELD_ID=$(echo \"$READY_INFO\" | jq -r '.id')\n   READY_OPTION_ID=$(echo \"$READY_INFO\" | jq -r '.options[] | select(.name | test(\"Ready\")) | .id')\n\n   # Set to Ready\n   gh project item-edit --project-id $PROJECT_NODE_ID --id $ITEM_ID --field-id $STATUS_FIELD_ID --single-select-option-id $READY_OPTION_ID\n   ```\n\n   If the project scope is not available, inform the user that tickets were created but need to be manually added to the project board.\n\n5. **Report** the created issue URL to the user.\n\n## Batch creation\n\nWhen creating many tickets at once, delegate to subagents via the `Agent` tool. Launch the whole batch of subagents in a single message so findings are processed concurrently.\n\nSplit the requested findings into groups of ~5-7 and spawn one subagent per group (aim for 5-6 subagents at a time). Give each subagent its assigned `PT-{N}` list and instruct it to:\n\n- Locate each finding by its `PT-{N}` header and read those pages of the PDF\n- Draft the ticket body and write it to a temp file\n- Create the issue with `--body-file`, correct labels, and assignee\n- Add each issue to the project board and set status to Ready\n- Return the created issue URLs (and any failures) so the run is resumable\n\n## Important notes\n\n- All tickets go in `fleetdm/confidential` (private repo) since they contain security findings\n- Always use `p3` priority label unless the user specifies otherwise\n- Always use `bug` label (not `story`)\n- The foldable `<details>` section preserves the full Aikido evidence for reference\n- When creating many tickets, read the PDF pages for each finding to get accurate details\n- For the Fix section: if one fix is clearly the best, only list that one. Only list multiple options if there are genuinely different viable approaches\n- Fetch project field IDs at runtime rather than hardcoding, since they can change across projects\n",".claude/skills/bump-migration/SKILL.md":"---\nname: bump-migration\ndescription: Bump a database migration's timestamp to the current time. Required when a PR's migration is older than one already merged to main. Use when asked to \"bump migration\", \"update migration timestamp\", or when a migration ordering conflict is detected.\nallowed-tools: Bash(go run *), Bash(make dump-test-schema*), Bash(git diff*), Bash(ls *), Read, Grep, Glob\nmodel: sonnet\neffort: medium\n---\n\n# Bump a database migration timestamp\n\nBump the migration: $ARGUMENTS\n\n## When to use\n\nThis is required when a PR has a database migration with a timestamp older than a migration already merged to main. This happens when a PR has been pending merge for a while and another PR got merged with a more recent migration.\n\n## Process\n\n### 1. Identify the migration to bump\n\nIf the user provided a filename, use that. Otherwise, find migrations on this branch that are older than the latest on main:\n\n```bash\n# List migrations on this branch that aren't on main\ngit diff origin/main --name-only -- server/datastore/mysql/migrations/tables/\n```\n\n### 2. Run the bump tool\n\nThe tool lives at `tools/bump-migration/main.go`. Run it from the repo root:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go\n```\n\nThis will:\n- Rename the migration file with a new current timestamp\n- Rename the test file (if it exists)\n- Update all function names inside both files (`Up_OLDTS` → `Up_NEWTS`, `Down_OLDTS` → `Down_NEWTS`, `TestUp_OLDTS` → `TestUp_NEWTS`)\n\n### 3. Optionally regenerate the schema\n\nIf the migration affects the schema, add `--regen-schema` to also run `make dump-test-schema`:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go --regen-schema\n```\n\n### 4. Verify\n\n- Check that the old files are gone and new files exist with the updated timestamp\n- Verify the function names inside the files match the new timestamp\n- Run `go build ./server/datastore/mysql/migrations/...` to check compilation\n\n## Rules\n- Always run from the repo root\n- Provide the migration filename, not the test filename\n- The tool handles both the migration and its test file automatically\n",".claude/skills/cherry-pick/SKILL.md":"---\nname: cherry-pick\ndescription: Cherry-pick a merged PR into the current RC branch. Use when asked to \"cherry-pick\", \"cp into RC\", or after merging a PR that needs to go into the current release.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(gh api *), Read, Grep, Glob\neffort: low\n---\n\nCherry-pick a merged PR into the current RC branch. Arguments: $ARGUMENTS\n\nUsage: `/cherry-pick <PR_NUMBER> [RC_BRANCH]`\n\n- `PR_NUMBER` (required): The PR number to cherry-pick (e.g. `43078`). If not provided, ask the user.\n- `RC_BRANCH` (optional): The target RC branch name (e.g. `rc-minor-fleet-v4.83.0`). If not provided, auto-detect the most recent one.\n\n## Step 1: Ensure main is up to date\n\n1. `git fetch origin`\n2. `git checkout main`\n3. `git pull origin main`\n\n## Step 2: Identify the RC branch\n\nIf an RC branch was provided as the second argument, use it (but still confirm with the user before proceeding).\n\nOtherwise, auto-detect by listing both minor and patch RC branches:\n\n```\ngit for-each-ref 'refs/remotes/origin/rc-minor-fleet-v*' 'refs/remotes/origin/rc-patch-fleet-v*' --format='%(refname:strip=3)' | grep -E '^rc-(minor|patch)-fleet-v[0-9]+\\.[0-9]+\\.[0-9]+$' | sort -V\n```\n\nFrom the results, suggest the most recent `rc-minor-fleet-v*` branch as the default. If patch branches also exist, mention them as alternatives. **Always ask the user to confirm the target RC branch before proceeding.**\n\n## Step 3: Get the merge commit and GitHub username\n\n1. Get the PR title:\n   ```\n   gh pr view <PR_NUMBER> --json title --jq .title\n   ```\n2. Get the merge commit SHA:\n   ```\n   gh pr view <PR_NUMBER> --json mergeCommit --jq .mergeCommit.oid\n   ```\n   If this returns `null` or an empty value, the PR is not yet merged. Tell the user and stop.\n3. Get the GitHub username: `gh api user --jq .login`\n\n## Step 4: Cherry-pick onto a new branch\n\n1. Create a new branch off the RC branch:\n   ```\n   git checkout -b <github-username>/<short-description>-cp origin/<rc-branch>\n   ```\n   Derive `<short-description>` from the PR title (lowercase, hyphens, keep it short — 3-5 words max).\n2. Check whether the commit is a merge commit by inspecting its parents:\n   ```\n   git rev-list --parents -n 1 <merge-commit-SHA>\n   ```\n   If the commit has multiple parents, run:\n   ```\n   git cherry-pick -m 1 <merge-commit-SHA>\n   ```\n   Otherwise (squash-merged or rebased), run:\n   ```\n   git cherry-pick <merge-commit-SHA>\n   ```\n3. If there are conflicts, stop and tell the user which files conflict. Do NOT attempt to resolve them automatically.\n\n## Step 5: Push and open PR\n\n1. Push the branch: `git push -u origin HEAD`\n2. Open a PR targeting the RC branch (NOT main):\n   ```\n   gh pr create --base <rc-branch> --title \"Cherry-pick #<PR_NUMBER>: <original-title>\" --body \"$(cat <<'EOF'\n   Cherry-pick of #<PR_NUMBER> into the RC branch.\n   EOF\n   )\"\n   ```\n3. Report the PR URL to the user.\n",".claude/skills/command-palette/SKILL.md":"---\nname: command-palette\ndescription: Authoring guide for the Fleet command palette. Use when adding or editing items in frontend/components/CommandPalette/groups/, when editing frontend/router/paths.ts or frontend/router/index.tsx, or when adding a new top-level page, global create action, MDM connector / singleton config, automation hook, or picker action that needs a palette entry.\nallowed-tools: Read, Grep, Glob, Bash(yarn test*)\neffort: medium\n---\n\n# Command palette authoring\n\nThe canonical guide lives in **`frontend/docs/patterns.md` § Command palette** — read that first. It covers what belongs (and what doesn't), the group-to-file mapping, required/optional fields, label conventions, the full keyword/synonym checklist, permission gating, `teamName` chips, search-only items, and test expectations.\n\nThis skill exists to make sure that guide gets followed when palette-worthy changes land.\n\n## Before adding an item\n\n1. **Read `frontend/docs/patterns.md` § Command palette** end to end.\n2. **Grep the target group file** for similar existing items. Match their shape — field order, keyword style, gating, `teamName` helper usage — instead of inventing a new pattern. The groups are the source of truth for current conventions:\n   ```\n   frontend/components/CommandPalette/groups/\n   ```\n3. **Confirm the destination page's own permission check**, then mirror it on the palette item using a flag from `ICommandPaletteContext` (`frontend/components/CommandPalette/helpers.ts`). Add a new flag there only if no existing one models the destination's check. Don't route users to a screen they can't use.\n4. **Premium paywall check:** if the destination page (or the specific tab/section the link lands on) renders `<PremiumFeatureMessage />` for `!isPremiumTier`, gate the palette item on `isPremiumTier` so it's hidden on Free. A palette entry that lands on the upsell wall is a bait-and-switch — the palette is for actions, not for marketing the paid tier. Mirror tab-level paywalls too (e.g., `paths.ADMIN_INTEGRATIONS_SSO_END_USERS` lands on a Premium-only tab even though the parent SSO page works on Free). If the destination only paywalls a sub-section (not the whole page or the linked tab), don't gate — the page is still useful on Free.\n\n## After adding an item\n\n1. **Update `frontend/components/CommandPalette/helpers.tests.ts`**:\n   - Assert the item appears for the right roles and hides for the wrong ones\n   - If premium-only: assert absence in the `Fleet Free (isPremiumTier: false)` block\n   - If hidden in primo mode: add to the `Primo Mode (isPrimoMode: true)` block\n   - If it sets a `teamName` chip: assert it renders / doesn't render against the relevant fleet contexts\n2. Run the palette tests:\n   ```\n   yarn test frontend/components/CommandPalette/helpers.tests.ts\n   ```\n   (Note: test files use `.tests.ts` plural, and `yarn test` — not `yarn jest` — uses the project's jest config.)\n\n## When *not* to add an entry\n\n- Per-entity edit / delete operations (the entity is already in scope on its row or detail page)\n- Bulk-select operations that depend on an existing selection\n- One-off UI affordances (toggles, expanders) tied to a single view\n\nSee patterns.md for the dividing line and the full \"doesn't belong\" list.\n",".claude/skills/ai-profile-test/SKILL.md":"---\nname: ai-profile-test\ndescription: Propose a new prompt test case for the AI configuration profile generator's test suite and open a PR. Use when asked to \"add a profile generator test\", \"propose a prompt test case\", \"add a test prompt for AI profiles\", or when a generated profile came out wrong and the failure should become a regression test.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(node *), Bash(cd website && sails run *), Bash(cd website && npm run test-profile-generator *), Read, Grep, Glob, Edit, WebFetch, WebSearch\neffort: medium\n---\n\nAdd a test case to `website/profile-generator/configuration-profile-generator-cases.js` and open a PR. That file is shared by two runners: the mocha suite (`website/profile-generator/tests/configuration-profile-generator.test.js`, one `it()` per case) and the `test-llm-generated-configuration-profile` script (repeated runs with `--parallelTests`). Adding the case to `TEST_CASES` registers it with both — don't edit either runner. Arguments: $ARGUMENTS\n\nUsage: `/ai-profile-test \"<natural-language instruction>\" [csp|mobileconfig|ddm]`\n\n- The instruction is what an admin would type into the profile generator (e.g. `\"Disable the camera\"`). If not provided, ask for it.\n- The profile type is inferred from the instruction when obvious (Windows policy → `csp`; Apple → `mobileconfig` or `ddm`). Ask only if genuinely ambiguous.\n\n## Step 1: Branch off main\n\nThe test cases file only exists on `main` — your current branch (e.g. an RC branch) may not have it.\n\n```\ngit fetch origin\ngit checkout -b add-profile-test-<short-slug> origin/main\n```\n\n## Step 2: Check for existing coverage\n\nRead every entry in `TEST_CASES` in the cases file. If an existing case already exercises the same concrete setting — the same CSP policy node, mobileconfig payload key, or DDM setting key — with the same intended behavior, or a near-identical instruction, STOP and report the overlap to the user instead of opening a PR. Sweep by the exact key name (e.g. `RemovableDiskDenyWriteAccess`), not just by instruction wording.\n\nSharing a payload type or DDM declaration type alone is NOT duplicate coverage — the suite deliberately has multiple cases per declaration (e.g. `ddm-beta-enroll` and `ddm-beta-block` both use `softwareupdate.settings`; the two intelligence cases share `intelligence.settings`). A new setting inside an already-covered declaration or payload still needs its own case.\n\n## Step 3: Verify the mechanism against vendor docs\n\nDo NOT write assertions from memory — a plausible-but-wrong key produces a test that enforces the wrong output forever. Confirm the exact key names, casing, value types, and allowed values:\n\n- **csp**: Microsoft CSP reference (`learn.microsoft.com/en-us/windows/client-management/mdm/`) — exact OMA-URI node path, `Format`, allowed values.\n- **mobileconfig**: Apple's per-payload YAML schemas (`github.com/apple/device-management`, `mdm/profiles/` — e.g. `com.apple.applicationaccess.yaml`) — `PayloadType`, key names with exact casing, value types, allowed values. The rendered docs (`developer.apple.com/documentation/devicemanagement/profile-specific-payload-keys`) cover the same payloads but are JS-rendered; the YAML is easier to fetch and is the source the docs are built from.\n- **ddm**: Apple's declarative device management schemas (same repo, `declarative/declarations/`) — declaration `Type` and payload keys.\n\nKeep the URL(s) you verified against — they go in the PR body so the reviewer can check the assertions without redoing the research.\n\n## Step 4: Write the case\n\nRead the `CASES` comment above `TEST_CASES` first — it documents the assertion design. Then follow the file's conventions:\n\n- `id`: `<profileType>-<short-slug>`, unique across the file.\n- `instructions`: phrased the way an admin would type it, matching the tone of neighboring cases. Don't name the platform — the profile type implies it.\n- `expect`: substring assertions only (compared with all whitespace stripped):\n  - `mustContain` / `mustNotContain`: raw substrings.\n  - `mustContainElement` / `mustNotContainElement`: `[tag, value]` pairs, e.g. `['Format', 'int']` or `['key', 'autohide']` — XML only (csp and mobileconfig). They compile to `<tag>value</tag>` regexes, so in a DDM case they never match the JSON output and a `mustNotContainElement` silently passes. DDM cases express keys and values as raw `mustContain` / `mustNotContain` substrings like `'\"MinorPeriodInDays\":30'`, following the existing DDM cases.\n  - Bind a value to its key as one adjacent-pair substring — whitespace stripping makes `'<key>allowBookstore</key><true/>'` work. Asserting the key and the value separately lets a value elsewhere in the profile satisfy the check.\n  - `mustNotContainOutsideCdata`: `mustNotContain` with CDATA sections blanked first — for rules about the profile itself rather than a document it transports (e.g. `'<?xml'` in a CSP case whose CDATA carries a WLANProfile).\n  - Assert against the tempting wrong answers too: the lookalike key that doesn't do what the instruction asks, wrong casing, `bool` where the CSP wants `int`, an inverted value.\n- `readByEye`: only for properties assertions can't express (one dict per payload domain, distinct PayloadUUIDs, single-line CDATA). Omit otherwise.\n- Do NOT set `canary: true` — canaries are a curated set of exact-substring sentinel cases, not a flag for new proposals.\n- Append the case to the end of its profile-type section (`CSP` / `MOBILECONFIG` / `DDM`).\n\n## Step 5: Validate\n\nAlways: `node --check website/profile-generator/configuration-profile-generator-cases.js`\n\nIf a website dev environment with an Anthropic API key is available, run the case for real (it spends API money — a few cents per run). Either runner works; the mocha suite checks one generation (including the 10s latency budget), the script measures how often it passes:\n\n```\ncd website && sails_custom__anthropicSecret='…' npm run test-profile-generator -- --grep '<id>:'\ncd website && sails run test-llm-generated-configuration-profile --caseId=<id> --parallelTests=3\n```\n\nSkipping this when the environment isn't available is fine — but the PR body must say whether the case was run against the live model or not.\n\n## Step 6: Open the PR\n\n1. Commit with a subject like `Website: Add profile generator test case for <thing>`.\n2. Push and open a PR against `main` with the body built from `.github/pull_request_template.md` (the `check-pr-template` CI check fails freeform descriptions).\n3. The body must include: what the case asserts and why, the vendor doc URL(s) from Step 3, whether the case was run against the live model, and the `sails run … --caseId=<id> --parallelTests=5` command for the reviewer.\n",".claude/skills/api-design-check/SKILL.md":"---\nname: api-design-check\ndescription: Check a proposed or changed Fleet REST API endpoint against existing API conventions (URL shape, parameter names, pagination, response envelope, status codes, Fleets/Reports naming, Premium markers, api_endpoints.yml). Use when asked to \"check API conventions\", \"review this API design\", \"is this endpoint consistent\", or when reviewing a reference-docs PR labeled ~api-or-yaml-design.\nallowed-tools: Read, Grep, Glob, Bash\neffort: high\n---\n\n# Check an API design against existing Fleet conventions\n\nTarget: $ARGUMENTS\n\nThe target can be a PR number, a branch, a spec file, or a pasted endpoint. With no target, use the current branch's diff against `main`.\n\nFleet has no written API style guide. The rule is \"be consistent with what's already there\", so this check compares the proposal with **real existing endpoints**. `references/conventions.md` records the patterns that are hard to infer from a single neighbor.\n\n## 1. Collect the proposed endpoints\n\n- **Docs PR or branch**: diff `docs/API/rest-api.md` (and `docs/Contributing/reference/api-for-contributors.md` for internal endpoints). Each endpoint is a `### Heading`, then a `` `METHOD /api/v1/fleet/...` `` line, then `#### Parameters`, `#### Example`, and `##### Default response`.\n- **Code**: diff `server/service/handler.go` and `ee/server/service/handler.go` for new `ue.GET/POST/PATCH/PUT/DELETE` registrations. Read the matching request and response structs for the parameter and response field names.\n- **Spec or pasted text**: read the endpoint definitions directly.\n\nFor each endpoint, write down: the method, the path, the parameters (name, type, `in`), the response body keys, the status code, and whether it's Premium.\n\n## 2. Find the closest existing endpoints\n\nFor each proposed endpoint, find 2–4 existing endpoints to compare it with, in `docs/API/rest-api.md`. Use them in this order:\n\n1. The same resource with a different verb. For a new `PATCH /fleet/foo/:id`, compare `GET /fleet/foo/:id` and `POST /fleet/foo`.\n2. The same kind of operation on a sibling resource. A new list endpoint is compared with other `List ...` endpoints, a host-scoped action with other `POST /hosts/:id/...` actions, and a Fleet Desktop endpoint with other `/device/:token/...` endpoints.\n3. Recently added endpoints over old ones when they disagree. Check with `git log -S '<path>' --format='%h %ad' --date=short -- \"docs/API/rest-api.md\"`. Older endpoints are often the inconsistent ones.\n\nQuote the neighbor you compared against in each finding. A finding with no existing endpoint as evidence is an opinion, so drop it or label it as one.\n\n## 3. Check each dimension\n\nGo through `references/conventions.md` section by section. At minimum, check these:\n\n- **URL**: the resource noun and its plural form, snake_case, path parameter names, and where it sits in the hierarchy (`/hosts/:id/...`, `/device/:token/...`, `/spec/...`, `.../batch`).\n- **Method and verb**: the HTTP method matches the heading verb (List/Get/Create/Add/Update/Delete), and actions are `POST` to a sub-path.\n- **Parameters**: the names and types of shared parameters (`fleet_id`, `page`, `per_page`, `order_key`, `order_direction`, `after`, `query`, `platform`, `labels_include_any`, ...), and that `In` (path/query/body/form) is correct. A path parameter documented as `body` is a doc bug.\n- **Response**: the list envelope (`{\"<plural>\": [...], \"meta\": {...}}` and/or `count`), the single-object shape (a bare object or wrapped in `{\"<singular>\": {...}}`, matching the resource's other endpoints), IDs as integers, timestamps as RFC 3339 UTC, and snake_case keys.\n- **Status codes**: 200 for normal success, 202 for queued or async host actions, 204 for no body, and 201 only for SCIM. Error codes should match the semantics neighbors use (409 conflict, 422 validation, 404 not found).\n- **Terminology**: new names use `fleet`/`fleets` and `report`/`reports`, never `team`/`query` in the product sense. Renamed fields need the `renameto` alias in code.\n- **Premium and auth**: the `_Available in Fleet Premium._` marker on Premium-only parameters and endpoints, and a documented non-default auth (node key, device token).\n- **Registration**: the new endpoint is listed in `server/api_endpoints/api_endpoints.yml` with a display name that matches the doc heading.\n- **Doc structure**: the section order, a `Default response` with `Status:`, an example that uses realistic IDs, and a link from the section's table of contents.\n\n## 4. Report\n\nGroup the findings like this:\n\n1. **Inconsistent**: the proposal deviates from a clear majority pattern. Show the proposed value, the existing convention, and 1–2 neighbor endpoints as evidence.\n2. **Split convention**: existing endpoints disagree (`conventions.md` marks these). Don't pick a winner. Name both patterns and say that it's a call for the API design DRI.\n3. **Doc nits**: wrong `In` column, a missing `Status:` line, an anchor not in the TOC, and so on.\n\nKeep it short: one line per finding plus the evidence. If a dimension is consistent, don't list it. End by saying which endpoints were compared.\n\nDon't edit files or post on GitHub. This is a read-only check.\n",".claude/skills/content-style/SKILL.md":"---\nname: content-style\ndescription: Write, edit, and review any public-facing or customer/prospect-facing Fleet content so it follows Fleet's writing, brand, voice, and style guidelines. Use this whenever you create or change the words in website copy (fleetdm.com), handbook pages, docs, guides, tutorials, articles, blog posts, announcements, release notes, product UI text and microcopy, GitHub issues about content, or marketing and sales enablement material, even if the user never says \"style guide.\" Trigger on edits under website/, handbook/, docs/, articles/, and on requests like \"write a blog post,\" \"draft an announcement,\" \"review this guide for style,\" \"make this sound like Fleet,\" \"tighten this up,\" or \"clean up this copy.\" This skill is for authoring and editing prose for voice, brand, and style. It does not apply to writing code, tests, scripts, commit messages, or internal team chat, even when those happen to mention articles, announcements, blog posts, or UI strings.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet content style\n\nProduce and refine written content that sounds like Fleet: radically honest, technically precise, and \"Mister Rogers\" kind. The reader is an IT professional, client platform engineer, or security practitioner. Write to them as a helpful expert peer, never as a salesperson.\n\nThis skill works both inside the Fleet repo and outside it. The rules below are self-contained, but when the handbook is present it is the source of truth — read it first so you always reflect the latest guidance.\n\n## When you start\n\n1. **Identify the content type and the mode.** Type drives format discipline: website copy, guide/tutorial, article/blog, announcement, docs reference, product UI text, or marketing/sales enablement. Mode is either *writing new* content or *reviewing/editing existing* content. If the type or intended placement is unclear, ask — don't guess, because format rules differ by type.\n\n2. **Load the canonical guidelines if they exist.** When working in a repo that contains them, read these before writing, since they may have been updated since this skill was written:\n   - `handbook/company/writing.md` — the full writing guide: style, headings, links, lists, and numbers (start here)\n   - `handbook/company/brand.md` — visual brand, naming, imagery\n   If they aren't present (e.g. drafting external copy), use the embedded rules below.\n\n3. **For marketing and sales content, align positioning.** Read `references/positioning.md` — a brief distilled from the \"Implicating the pain\" positioning doc and the \"Fleet for IT engineers and admins\" sales deck (links inside). It covers the audience's pains, the \"implicate the pain\" narrative method, Fleet's differentiators, and messaging do's and don'ts. Treat its proof points as needing verification: never publish a stat, customer quote, or named claim without confirming it against a public, approved source, and ask the user if you can't.\n\n4. **Read the full rules for anything non-trivial.** `references/style-rules.md` has the complete mechanics with examples; `references/content-types.md` has per-type format discipline and the article/guide/announcement endmatter templates. The checklist below is the fast path, not the whole story.\n\n## The core of Fleet's voice\n\n- **Plain English, short sentences, active voice.** One idea per sentence. If a sentence runs past ~20 words, split it. \"Fleet manages hosts,\" not \"Hosts are managed by Fleet.\"\n- **Imperative mood for instructions.** \"Click **Save**,\" not \"You should click Save.\"\n- **Clarity over cleverness.** If a sentence is clever but obscures meaning, rewrite it. The goal is for the reader to understand, not for the writer to look smart.\n- **Radical honesty.** State bugs, limitations, and gaps plainly. Never use marketing spin to hide them.\n- **No snark, no hype.** Treat the reader as an equal. Never condescending, edgy, or sarcastic.\n\n## High-frequency rules (the fast checklist)\n\nThese are the rules content most often gets wrong. Apply them on every pass.\n\n- **Sentence case everywhere** — headings, subheadings, buttons, UI labels. \"Host details,\" not \"Host Details.\" Only proper nouns, acronyms, and self-styled names (macOS, osquery) keep their casing.\n- **Commas, not em dashes.** Avoid em dashes entirely. Use a comma, a colon, or a new sentence. This is the single most common AI tell to strip.\n- **Oxford comma, always.** \"macOS, Windows, and Linux.\"\n- **Bold UI elements only.** \"Navigate to **Hosts**.\" Never bold for emphasis or to decorate. Excessive bolding is an AI tell.\n- **Cut filler.** Delete \"very,\" \"really,\" \"actually,\" \"basically,\" \"essentially,\" and \"just.\" Use common words: \"help,\" not \"facilitate.\"\n- **No hyperbole.** Strip \"revolutionary,\" \"game-changing,\" \"seamless,\" \"powerful,\" \"robust,\" \"unprecedented,\" \"industry-leading,\" \"best-in-class.\"\n- **Fleet naming.** The product and company are **Fleet** (or Fleet Device Management) — never \"FleetDM,\" \"fleetDM,\" or \"fleetdm\" in prose. Lowercase `osquery`, `fleetctl`, `fleetd` (rewrite the sentence if one would start it). Capitalize Fleet Desktop and Orbit.\n- **Preferred terms.** Use \"hosts,\" \"devices,\" \"computers,\" \"Fleet UI,\" \"Fleet server.\" Avoid \"agents\" and \"nodes.\" Prefer \"device\" over \"endpoint.\"\n- **No fabrication.** Never invent features, URLs, names, dates, version numbers, or CLI commands. If you don't have something you need, ask — it's better not to know than to make it up.\n- **Strip AI intros.** No \"In the rapidly evolving world of…,\" no throat-clearing. Lead with the substance.\n\n## Writing mode\n\nDraft directly in the target format and apply the rules as you write — don't write loose prose and clean it up after. Lead with the \"why\" before the \"how.\" Match the format discipline for the content type (see `references/content-types.md`): guides get numbered steps, announcements lead with the news, website copy is scannable and benefit-focused, articles are conversational but professional.\n\nBefore presenting a draft, do one self-review pass against the checklist above, reading specifically for em dashes, over-bolding, filler, hype, and sentence-case slips — these survive even careful first drafts.\n\n## Review / edit mode\n\nWhen the user hands you existing content (or you're editing files in a diff):\n\n1. Read the content and identify its type.\n2. Go through it against the checklist and the full rules, noting each issue with its location.\n3. Apply the fixes directly (Edit), or if the user wants a critique, report findings as a short list grouped by rule — quote the original, give the corrected version, and name the rule. Keep it specific and actionable; don't pad with praise.\n4. Preserve the author's meaning and technical accuracy. Style edits must never change facts. If a sentence is factually unclear, flag it rather than rewriting it into something that might be wrong.\n\nWhen in doubt, simplify.\n",".claude/skills/fix-ci/SKILL.md":"---\nname: fix-ci\ndescription: Diagnose and fix failing CI tests from a GitHub Actions run. Use when asked to \"fix CI\", \"CI failure\", or \"failing tests in CI\".\nallowed-tools: Bash(gh *), Bash(go test *), Bash(go build *), Bash(MYSQL_TEST*), Bash(MYSQL_TEST=1 REDIS_TEST=1 *), Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1 *), Read, Grep, Glob, Edit\nmodel: opus\neffort: high\n---\n\nFix failing tests from a CI run. The argument is a GitHub Actions run URL or run ID: $ARGUMENTS\n\n## Step 1: Identify failing jobs\n\nExtract the run ID from the URL (the numeric path segment after `/runs/`). Use `gh run view <run_id>` to list the jobs, then find the failing ones:\n\n```\ngh run view <run_id> --json jobs --jq '.jobs[] | select(.conclusion == \"failure\") | {name: .name, id: .databaseId}'\n```\n\nGroup the failing jobs by **test suite** (the first parenthesized token in the job name, e.g. `integration-core`, `integration-enterprise`, `service`, `mysql`, `main`). You only need to examine **one job per unique suite** since the matrix variants (OS, MySQL version) run the same tests.\n\n## Step 2: Find the failing tests in each suite\n\nFor each unique suite, fetch the job log and find the `FAIL: ` lines. IMPORTANT: use `gh api` (not `gh run view --log`, which may return empty):\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: ' | head -30\n```\n\nThis gives you the failing test function names and subtests. Ignore the parent test if subtests are listed (e.g. if `TestFoo` and `TestFoo/Bar` both appear, focus on `TestFoo/Bar`).\n\n## Step 3: Get error details\n\nFor each suite, fetch the error traces:\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: \\|Error Trace\\|Error:\\|expected:\\|actual:' | head -60\n```\n\nThis tells you the exact file/line and what the assertion expected vs. what it got.\n\n## Step 4: Diagnose each failure\n\nFor each failing test, read the test code at the indicated file and line. Determine whether the failure is:\n\n**A) A stale test assertion** — the test expects an old string/value but the production code was intentionally changed. The test needs updating to match the new behavior. Signs:\n- The expected value is an old error message string and the actual value is a new one\n- The change aligns with the intent of the current branch's modifications\n- The production code change looks intentional\n\n**B) A legitimate test failure** — the test is correct but the code under test is buggy. The production code needs fixing. Signs:\n- The test's expected value matches the documented/intended behavior\n- The actual value indicates a regression or bug\n- The test was not related to any intentional change on this branch\n\n## Step 5: Fix stale assertions (category A)\n\nFor each stale assertion:\n1. Read the test file\n2. Update the assertion to match the new expected value\n3. Also search for **other assertions in the same file** that check similar strings — CI only catches the first failure per test, so there may be additional stale assertions that haven't failed yet. Use Grep to find them.\n4. Also check for **related assertions in other test files** for the same error message pattern\n\n## Step 6: Report legitimate failures (category B)\n\nFor each legitimate failure, report to the user:\n- The test name and file location\n- What the test expects vs. what it got\n- Your analysis of why the production code is producing the wrong result\n- The production code file/line that likely needs fixing\n\nDo NOT fix production code bugs without user approval — only report them.\n\n## Step 7: Verify fixes\n\nAfter fixing stale assertions, run the affected tests locally to verify they pass:\n\n- `pkg/spec/...` and `server/fleet/...`: `go test -run 'TestName' ./pkg/spec/...`\n- `server/service/...` (unit tests like devices_test.go, scripts_test.go): `go test -run 'TestName' ./server/service/`\n- `ee/server/service/...`: `go test -run 'TestName' ./ee/server/service/`\n- `server/datastore/mysql/...`: `MYSQL_TEST=1 go test -run 'TestName' ./server/datastore/mysql/`\n- Integration tests (`integration_core_test.go`, `integration_enterprise_test.go`, `integration_live_queries_test.go`): these require `MYSQL_TEST=1 REDIS_TEST=1` and take a long time, so just verify compilation with `go build ./...`\n\nAfter running tests, also do a proactive Grep scan for any remaining old assertion strings in test files that might break in CI even though they didn't show up in this run (CI stops at the first failure per test function).\n\n## Step 8: Report summary\n\nPresent a summary to the user:\n- Total failing suites and tests found\n- How many were stale assertions (fixed) vs. legitimate failures (reported)\n- List of files modified\n- Any remaining concerns or tests that couldn't be verified locally\n",".claude/skills/fleet-case-study-formatting/SKILL.md":"---\nname: fleet-case-study-formatting\ndescription: Apply Fleet's house format, voice, and required meta tags to Fleet CASE STUDIES — customer success stories published under `<meta name=\"category\" value=\"case study\">`. Use when drafting a new case study from a customer interview/quotes, or editing, tightening, or auditing an existing one, even if the user doesn't say \"case study\" (triggers: \"customer story\", \"success story\", \"write up [Company]'s Fleet migration\", \"case study for X\", a request built from call notes/quotes about a customer's experience with Fleet). Governs the challenge → choosing Fleet → results structure, the `attribution-quote` and `checklist` custom divs, the case-study-specific endmatter (summaryChallenge/summarySolution/summaryKeyResults, company/quote meta tags) the website build enforces, and the non-negotiable rule that every quote is verbatim and every number is customer-sourced. Pair with content-style for word-level voice. Do NOT use for articles, guides, or announcements — those are separate content types with their own skills, even when they also tell a customer story.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet case study formatting\n\nA Fleet case study exists to let a skeptical prospect hear, in a real customer's own words, that switching to Fleet solved a specific problem. It is not an article, and it is not marketing copy dressed up with a logo — it's a structured, quote-driven narrative that the website renders into a dedicated template with a sidebar summary, a company card, and a hero pull-quote. This skill governs that **structure, custom syntax, and required meta tags**; pair it with `content-style` for word-level voice (sentence case, no em dashes, no filler, no hype).\n\n## Scope — when this skill applies\n\nApplies to pieces published under `<meta name=\"category\" value=\"case study\">` — a customer's story of adopting Fleet, told in three acts (their problem, why they chose Fleet, what changed) and anchored by real attributed quotes.\n\nDoes **not** apply to:\n\n- **Articles** (`category` = `articles` or `comparison`) — thought-leadership, how-to, comparison pieces. Use `fleet-article-formatting`.\n- **Guides** (`category` = `guides`) — step-by-step procedures. Use `fleet-guide-formatting`.\n- **Announcements** (`category` = `announcements`) — even when they narrate a customer's experience. `articles/deputy-achieves-compliance-and-clarity-with-fleet.md` is a real example: it reads like a case study but is tagged `announcements` and skips the case-study meta tags entirely. If a customer-story draft doesn't have (or won't have) the summary/quote/company meta tags below, it's probably meant to be an announcement or article, not a case study — ask rather than forcing this template on it.\n\nBefore applying this format, check the `<meta name=\"category\" ...>` value, or ask which type the piece is destined for.\n\n## Canonical examples\n\nRead one or two before writing a new case study — `articles/fastly.md`, `articles/stripe.md`, `articles/thumbtack.md`, `articles/mollie.md`, `articles/faire.md`, `articles/foursquare.md`, `articles/primo.md`. All follow the same skeleton with different section names suited to each story. See `references/canonical-examples.md` for a structural breakdown of each one.\n\n## The structure\n\n```\n# Title (sentence case, names the company and the outcome)\n\n## [Challenge section: \"The Challenge\" / \"Why [Company] needed a change\" / \"The search for a solution\"]\n[Narrative: the old tool/process, the pain, why it became untenable.]\n\n<div purpose=\"attribution-quote\">\n\n*Verbatim quote about the pain.*\n\n**Speaker name**\n\nTitle, Company\n</div>\n\n## [Decision section: \"Choosing Fleet\" / \"Why Fleet\" / \"The search for a solution\"]\n[Narrative: evaluation criteria, why Fleet won, how the switch went.]\n\n<div purpose=\"checklist\">        <!-- optional, for evaluation criteria or a short outcome list -->\n\nFirst criterion or result\n\nSecond criterion or result\n</div>\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Results section: \"The results\" / \"The outcome\"]\n[Narrative: quantified outcomes, what's different now.]\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Optional closing: \"Looking ahead\" / \"The future\"]\n[What's next for the partnership — a plan, an expansion, a platform they're evaluating next.]\n\n<meta name=\"category\" value=\"case study\">\n<meta name=\"articleTitle\" value=\"...\">\n<meta name=\"description\" value=\"...\">\n\n<meta name=\"publishedOn\" value=\"YYYY-MM-DD\">\n<meta name=\"authorGitHubUsername\" value=\"n/a\">\n<meta name=\"authorFullName\" value=\"Fleetdm\">\n\n<meta name=\"companyLogoFilename\" value=\"...\">\n<meta name=\"quoteAuthorImageFilename\" value=\"...\">\n<meta name=\"quoteAuthorName\" value=\"...\">\n<meta name=\"quoteAuthorJobTitle\" value=\"...\">\n<meta name=\"quoteContent\" value=\"...\">\n\n<meta name=\"companyName\" value=\"...\">\n<meta name=\"companyInfo\" value=\"...\">\n<meta name=\"companyInfoLineTwo\" value=\"...\">    <!-- optional -->\n\n<meta name=\"summaryChallenge\" value=\"...\">\n<meta name=\"summarySolution\" value=\"...\">\n<meta name=\"summaryKeyResults\" value=\"...; ...; ...\">\n```\n\n### Title\n\nSentence case (except the company name, which keeps its own capitalization). Names the company and states the outcome, not the feature: \"Fastly gains visibility into all endpoints and critical infrastructure worldwide,\" \"Stripe moved 10,000 Macs to Fleet, saving hundreds of thousands annually,\" \"Thumbtack migrates more than 90% of Macs with no IT intervention.\" \"How [Company] ...\" also works when the story is about a mechanism (\"How Mollie manages endpoint compliance the same way it ships software,\" \"How Primo built an HR-driven IT platform, powered by Fleet\").\n\n### The three-act narrative\n\nEvery canonical example is some variation of this arc, even though section headings differ story to story — pick headings that fit the story rather than copying one example's exact wording:\n\n1. **The problem.** What the customer used before (or the process they had), why it broke down, and the cost of that (wasted time, risk, a specific incident, slow vendor support). Ground it in specifics: real tool names, real numbers of devices, a real incident (Thumbtack's mis-set nudge-profile date; Stripe's fragmented API workarounds).\n2. **Choosing Fleet.** What they evaluated against (sometimes an explicit checklist of criteria), and why Fleet won. Tie each reason back to a capability, not a vague endorsement: API-first architecture enabling GitOps, open-source code enabling self-hosting or auditability, cross-platform coverage, responsive Slack-based support.\n3. **The results.** Quantified, concrete outcomes: migration speed and percentage, cost/licensing savings, headcount or ticket-volume effects, new capabilities unlocked. This is where a `checklist` div listing bullet-style results is most common.\n\nAn optional fourth section (\"Looking ahead,\" \"The future\") closes with what's next — expanded platform coverage, a deepening partnership, a new use case. Not every case study needs one; several of the canonical examples fold this into the results section instead.\n\n### Custom syntax\n\nTwo custom `<div purpose=\"...\">` blocks, unique to case studies (and rarely used elsewhere) — get them exactly right, the build pipeline and stylesheet depend on them:\n\n**`attribution-quote`** — a pull quote inside the body, attributed to a named speaker:\n\n```\n<div purpose=\"attribution-quote\">\n\n*Italicized verbatim quote, exactly as the customer said it.*\n\n**Speaker Name**\n\nTitle, Company\n</div>\n```\n\n- The quote line is italic (`*...*`), the name is bold (`**...**`), the title/company line is plain text. Blank lines between each are required for the markdown to render correctly.\n- Title and company can be one line (`Sr Manager Systems Engineering, Fastly`) or, when the company is already obvious from context, just the title.\n- Use 2-4 of these per case study, spaced through the narrative at the moments they land hardest — right after describing the pain, right after the \"why Fleet\" reasoning, and in the results section. Don't front-load them all in one place.\n\n**`checklist`** — a plain list of short items with no markdown bullet syntax, rendered as a checklist by the stylesheet:\n\n```\n<div purpose=\"checklist\">\n\nFirst item — a criterion, a feature, or a quantified result\n\nSecond item\n\nThird item\n</div>\n```\n\n- Items are separated by blank lines, not `-` or `*` bullets — the div's CSS supplies the checkmark styling.\n- Use it for evaluation criteria (Faire's three MDM-selection priorities) or a short, punchy results list (Foursquare's cost/time savings). Longer results lists (4+ items with more explanation) can also work as plain markdown bullets in the results section prose, as Thumbtack's and Primo's \"With Fleet, [Company] has:\" lists do — either is fine, pick whichever reads cleaner for the story.\n\n### Voice and honesty guardrails — stricter than other content types\n\nCase studies carry more risk than an article: every claim is attributed to a real person at a real company, and it gets fact-checked by that company before or after publishing.\n\n- **Quotes are verbatim, never paraphrased or invented.** If you don't have the customer's exact words for a moment the story needs, write the narrative around it without a quote, or flag it for the author to source a real quote. Do not manufacture a plausible-sounding quote and attribute it to a named person.\n- **Numbers come from the customer, not from you.** Migration percentages, device counts, cost savings, timeframes — these all must trace back to what the customer or the Fleet team working with them actually said. Flag any number you're inferring rather than quoting/sourcing directly.\n- **Name Fleet's own team members' contributions honestly** (e.g., a CSM's role in a migration) only if that's part of the customer's account, not invented color.\n- Otherwise, the standard `content-style` rules apply in full: sentence case headings, no em dashes, no hyperbole (\"revolutionary,\" \"seamless,\" \"game-changing\"), Oxford commas, active voice. Case study prose reads slightly more narrative/conversational than a guide, closer to an article, but it's still restrained — let the customer's own quotes carry the enthusiasm; the narrator's voice around them stays measured and factual.\n\n### Endmatter — case-study-specific meta tags (build-enforced)\n\nBeyond the standard article endmatter (`articleTitle`, `description`, `publishedOn`, `authorFullName`, `authorGitHubUsername`, `category`), the website's markdown build (`website/scripts/build-static-content.js`) requires additional tags for `category: case study` pages, and will fail the build if they're missing:\n\n- **`summaryChallenge`, `summarySolution`, `summaryKeyResults`** — required. These populate the sidebar \"Challenge / Solution / Key results\" summary box on the case study page (`website/views/pages/articles/case-study.ejs`). `summaryKeyResults` **must** be a semicolon-separated list (`\"Result one; Result two; Result three\"`) — a single sentence with no semicolon fails the build.\n- **`companyLogoFilename`** — if present, must reference a file that actually exists in `website/assets/images/`. The build checks this and errors if the file is missing.\n- **`quoteContent`** (the hero pull-quote at the top of the page) — if present, requires `quoteAuthorName`, `quoteAuthorJobTitle`, and `quoteAuthorImageFilename` alongside it, and the image file must exist in `website/assets/images/`.\n- **`companyName`, `companyInfo`** (and optional `companyInfoLineTwo`) — power the \"About [Company]\" sidebar/mobile block. Not build-enforced, but expected by the template; include them.\n\n**Image assets are a hard dependency, not something this skill can produce.** Before the build will succeed, someone needs to add the actual logo and headshot files to `website/assets/images/`, following the site's naming convention (`{descriptor}-{css-width}x{css-height}@2x.{ext}`, e.g. `fastly-logo-104x40@2x.png`, `dan-jackson-120x120@2x.png`). If those files don't exist yet, say so explicitly rather than writing `<meta>` tags that point at nothing — that's a silent build break waiting to happen.\n\nAn escape hatch exists (`<meta name=\"useBasicArticleTemplate\" value=\"true\">`) for a case study that should render with the plain article template instead of the sidebar layout; it then requires `cardTitleForCustomersPage` instead of the summary/quote/company tags. This is rare — only reach for it if the author specifically doesn't want the sidebar template.\n\n### Related, optional step: testimonials.yml\n\nMany (not all) published case studies also get their pull-quote added as an entry in `handbook/company/testimonials.yml`, which feeds the `<scrollable-tweets>` carousel used across the site (e.g., the `/customers` page). This is a nice-to-have, not build-enforced, and outside this skill's core job — mention it to the author as a follow-up rather than doing it unprompted, since it touches a shared file curated by the marketing team.\n\n## Workflow: writing a new case study\n\n1. Confirm you have real material to draw from — customer quotes (verbatim, attributed), and concrete numbers (device counts, migration timelines, cost figures). If working from raw interview notes or a call transcript, extract the quotes and facts before drafting; don't smooth a real quote into different words.\n2. Identify the three-act shape for this specific story: what was broken, why Fleet, what changed. Pick section headings that fit the story (see canonical examples) rather than reusing one example's headings verbatim.\n3. Draft the body: problem → decision → results, threading 2-4 `attribution-quote` divs at the moments they land, and a `checklist` div for evaluation criteria and/or headline results if the story has a natural short list.\n4. Write the title (sentence case, names the company and the outcome).\n5. Write the full endmatter block: standard article tags, then the case-study-specific summary/quote/company tags. Derive `summaryChallenge`/`summarySolution` as tight paraphrases of the body's first two acts; derive `summaryKeyResults` from the results section, semicolon-separated.\n6. Confirm image assets (`companyLogoFilename`, `quoteAuthorImageFilename`) exist in `website/assets/images/`, or flag that they still need to be added.\n7. Run the `content-style` skill over the prose for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: auditing or editing an existing case study\n\n1. Confirm it's tagged `category: case study`. If it's an `announcements` piece narrating a customer story (like the Deputy example), don't force this structure onto it — flag the mismatch instead.\n2. Read the whole piece and check the three-act shape is intact: problem, decision, results, each grounded in specifics rather than generic praise.\n3. Check every quote reads as something a person would actually say (specific, occasionally imperfect phrasing) rather than smoothed marketing copy — that's often a sign a quote was paraphrased rather than transcribed. Flag for the author to verify against the source if uncertain.\n4. Check the `attribution-quote` and `checklist` divs are syntactically correct (blank lines between quote/name/title, no stray markdown bullets inside `checklist`).\n5. Verify the endmatter has all case-study-required tags and that `summaryKeyResults` is semicolon-separated.\n6. Verify referenced image files (`companyLogoFilename`, `quoteAuthorImageFilename`) actually exist in `website/assets/images/`.\n7. Run the `content-style` skill over the prose.\n8. Run the self-check below, then summarize changes and flag anything you couldn't verify (a number, a quote, a missing image asset).\n\n## Self-check before finishing\n\n- Title is sentence case, names the company, and states the outcome rather than a feature.\n- Body follows the problem → choosing Fleet → results arc, with section headings suited to this story.\n- 2-4 `attribution-quote` divs, correctly formatted (italic quote, blank line, bold name, blank line, title/company), spaced through the narrative rather than clustered.\n- Every quote is verbatim and attributed to a real, named person; no invented quotes.\n- Every number (migration %, timeframe, cost, device count) traces back to the customer or Fleet team, not an inference.\n- A `checklist` div (or a plain bullet list) surfaces the headline results.\n- Endmatter includes `summaryChallenge`, `summarySolution`, `summaryKeyResults` (semicolon-separated), and the company/quote meta tags — or, if using `useBasicArticleTemplate`, `cardTitleForCustomersPage` instead.\n- `companyLogoFilename` and `quoteAuthorImageFilename` reference image files that exist in `website/assets/images/`, or the author has been told they still need to add them.\n- No \"osquery\" in prose (say \"Fleet's agent\" or \"fleetd\"); headings sentence case; no em dashes, filler, or hyperbole.\n- The `content-style` skill has been run over the prose.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/case-study-template.md`. A structural breakdown of each canonical example lives at `references/canonical-examples.md`.\n",".claude/skills/fix-sql-parser/SKILL.md":"---\nname: fix-sql-parser\ndescription: Fix the osquery SQL parser when it rejects a valid query (or accepts an invalid one). Use when a query is flagged as invalid in the query editor but runs fine in osquery, when asked to \"fix the SQL parser\", \"fix the grammar\", \"this query is valid but Fleet says syntax error\", or when a corpus knownFailure needs closing.\nallowed-tools: Bash(yarn *), Bash(npx *), Bash(sqlite3 *), Bash(make generate-osquery-sql-parser), Bash(node *), Bash(git diff*), Bash(git status*), Read, Edit, Grep, Glob\neffort: high\n---\n\n# Fix an osquery SQL parser bug\n\nQuery to fix: $ARGUMENTS\n\nThe parser lives in `frontend/utilities/osquery_sql_parser/`. Read that\ndirectory's `README.md` first — it is the source of truth for this workflow and\nfor what the grammar deliberately excludes. This skill is the executable\nversion of its \"Making a change\" section.\n\n## First: is it actually a bug?\n\nDo not skip this. Three things are rejected **on purpose**, and \"fixing\" them\nwould undo deliberate decisions:\n\n1. **Non-SELECT statements.** osquery is read-only. `INSERT`, `UPDATE`,\n   `DELETE`, `CREATE`, `DROP`, `ALTER`, `ATTACH`, `PRAGMA`, `EXPLAIN`,\n   `BEGIN` are parse errors by design. Never re-add statement types to\n   `crud_stmt`.\n2. **Bind parameters** (`?`, `:name`, `@name`, `$name`). Valid SQLite, but\n   nothing in Fleet supplies bindings, so an unbound parameter silently matches\n   nothing. Rejecting them is intentional.\n3. **MySQL/Postgres dialect** osquery has no equivalent for: `FOR UPDATE`,\n   `INTERVAL`, `@@variables`, `RLIKE`, `FROM DUAL`, `#` comments, `@>` and\n   other jsonb operators, `COLLATE =`. See the README's Provenance section for\n   the full list.\n\nThen confirm the query is valid for the engine, using real SQLite:\n\n```bash\nsqlite3 :memory: \"<the query>\"\n```\n\nA syntax error here means **the query is wrong, not the grammar** — say so and\nstop. (Errors about missing tables are expected and fine; osquery's tables\ndon't exist in a bare sqlite3. Only syntax errors matter.)\n\nIf the query is valid SQLite and isn't in one of the three excluded categories,\nit is a real bug. Continue.\n\n## 1. Reproduce against the grammar\n\n```bash\nyarn --silent peggy -t \"<the query>\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs\n```\n\nThe `SyntaxError` it prints carries a `location` (line/column) and an\n`expected` list. Together these tell you which rule gave up and what it wanted\n— that is the rule to widen. Note the column and read the SQL at that offset;\nthe failure is usually one token past the construct the grammar can't handle.\n\n## 2. Add the failing case to `corpus.json` and watch it fail\n\n`frontend/utilities/osquery_sql_parser/corpus.json` is hand-maintained. Add:\n\n```json\n{\"name\": \"short description of the construct\", \"query\": \"<the query>\"}\n```\n\nNo `expect` field means \"must parse\". If you are instead fixing the opposite\nproblem — the parser accepts something it shouldn't — add\n`\"expect\": \"reject\"` and a `note` saying why.\n\n**If the query is already in the corpus as a `knownFailure`, delete its\n`knownFailure` and `expect` fields now, before touching the grammar.** Left\nalone, that entry asserts the gap still exists, so it passes until your fix\nlands and then fails — backwards. Removing the fields is what makes it red.\n\nNow run the tests and **confirm they fail, naming your entry**:\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser\n```\n\nYou should see `✕ parses every query expected to parse` with your entry's name\nin the reported array. A red test for the right reason before any grammar edit\nis what proves the fix actually did something. If it passes here, either the\nquery already parses or the entry is wrong — investigate before continuing.\n\n## 3. Edit the grammar\n\nEdit only `osquery_sql.pegjs`. **Never** edit\n`osquery_sql_parser.generated.js`; it is gitignored and rebuilt from the\ngrammar.\n\nRules read like BNF: `rule = alt1 / alt2 { action }`. Notes:\n\n- `'FOO'i` matches case-insensitively\n- `__` is optional whitespace/comments\n- alternation order matters — longest match first\n- action blocks build the AST, so the grammar doubles as AST documentation\n\nPrefer the smallest widening that fixes the case: add an alternative to the\nrule that failed, rather than restructuring. If your change alters the shape of\nan AST node, check whether `frontend/utilities/sql_tools.ts`'s visitor needs to\nlearn it — that file walks the AST to extract table names.\n\n## 4. Test\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser frontend/utilities/sql_tools.tests.ts frontend/components/forms/validators/validate_query\n```\n\n`yarn test` regenerates the parser first via the `pretest` hook, always through\nthe lockfile-pinned peggy. Invoking jest directly does not — if you do, run\n`make generate-osquery-sql-parser` first or you test a stale parser.\n\nYour new entry should now pass.\n\n## 5. Check you did not widen too far\n\nThis is the step that catches real mistakes. A loosened rule can start\naccepting dialect syntax the grammar deliberately rejects, and the corpus is\nthe guard: it holds ~57 `expect: \"reject\"` entries covering exactly that.\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser   # corpus: parse + reject + gaps\nnpx tsc --noEmit -p tsconfig.json\nyarn lint\n```\n\nThen spot-check the exclusions by hand — each of these must still be rejected:\n\n```bash\nfor q in \"INSERT INTO users (name) VALUES ('x')\" \"SELECT @@version\" \\\n         \"SELECT * FROM users FOR UPDATE\" \"SELECT 1 FROM users WHERE uid = ?\"; do\n  printf '%-45s ' \"$q\"\n  yarn --silent peggy -t \"$q\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs \\\n    >/dev/null 2>&1 && echo \"ACCEPTED - BUG, you widened too far\" || echo \"rejected (correct)\"\ndone\n```\n\nFinally, run the whole frontend suite, since `sql_tools` and the query\nvalidator feed several pages:\n\n```bash\nyarn test\n```\n\n## 6. Report\n\nTell the user:\n\n- the rule you changed and why that was the right one\n- the corpus entry you added\n- confirmation that the reject cases and full suite still pass\n\nCommit the grammar and `corpus.json` together. The generated parser is\ngitignored, so there is nothing else to commit. Do not add issue or PR numbers\nto comments in either file.\n\n## Rules\n\n- Verify against real `sqlite3` before changing the grammar. If SQLite rejects\n  the query, the query is the bug.\n- Red test first, always: corpus entry before grammar edit.\n- Only `osquery_sql.pegjs` is edited. The generated parser is never edited or\n  committed.\n- `crud_stmt` stays SELECT-only.\n- Do not delete or restructure unrelated rules while you are in there.\n- If the fix would require re-admitting a deliberate exclusion, stop and ask\n  rather than deciding for the user.\n",".claude/skills/find-related-tests/SKILL.md":"---\nname: find-related-tests\ndescription: Find test files and functions related to recent git changes. Suggests exact go test commands with correct env vars.\nallowed-tools: Bash(git *), Read, Grep, Glob\neffort: low\n---\n\nLook at my recent git changes (`git diff` and `git diff --cached`) and find all related test files.\n\nFor each modified file, find:\n1. The `_test.go` file in the same package\n2. Integration tests that exercise the modified code (check `server/service/integration_*_test.go` files)\n3. Any test helpers or fixtures that may need updating\n\nList the test files and suggest specific test functions to run with the exact `go test` commands, including the right env vars (MYSQL_TEST, REDIS_TEST, etc.).\n",".claude/skills/fleet-article-formatting/SKILL.md":"---\nname: fleet-article-formatting\ndescription: Apply Fleet's house article format and article-specific voice to Fleet ARTICLES — blog pieces with meta category \"articles\" or \"comparison\" (thought-leadership, how-to, and comparison pieces). Use when writing a NEW article or editing, refreshing, or tightening an EXISTING one, even if the user doesn't say \"use the format.\" Governs structure and article-specific voice; pair with content-style for word-level voice. Do NOT use for guides, case studies, or announcements — those are separate content types with their own skills.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet article formatting\n\nThis skill governs article **structure and article-specific voice** — the section order, the key-takeaways pattern, the CTAs, and the honest-claims guardrails — for drafting new articles and bringing older ones up to standard. For word-level voice (sentence case, em dashes, filler, Fleet terminology, positioning), run the `content-style` skill over the prose. Apply both together on every article.\n\nThe format does one job: let a busy reader get the whole argument from the top of the page, then keep reading for the proof. \"Key takeaways\" and the CTA button sit immediately after the dek — before the intro — so a reader who scrolls no further still leaves with the argument and a next step. Every rule below serves that.\n\n## Content types\n\nFleet publishes several content types under `articles/`. This skill governs the **article** format only. Identify the type first (the `<meta name=\"category\" ...>` value is the routing signal), then apply the matching format. The canonical list of valid `category` values lives in [`website/scripts/build-static-content.js`](../../../website/scripts/build-static-content.js) (`validArticleCategories`); a fuller per-type explainer is in [`content-style/references/content-types.md`](../content-style/references/content-types.md).\n\n| Content type | What it is | `category` value(s) | Format governed by |\n|---|---|---|---|\n| **Article** | Thought-leadership, how-to, and comparison pieces in the house format (title → dek → key takeaways → CTA → body → closing) | `articles`, `comparison` | **this skill** (+ `content-style` for prose) |\n| **Guide** | Step-by-step operational how-to | `guides` | `fleet-guide-formatting` |\n| **Case study** | Customer story; requires summary/quote meta tags | `case study` | `fleet-case-study-formatting` |\n| **Announcement** | Product/news announcement | `announcements` | `content-style` |\n| Release notes, podcasts, webinars, whitepapers, reports | Other content types | `releases`, `podcasts`, `webinar`, `whitepaper`, `report`, … | out of scope here |\n\n**Scope follows from this table:** apply this skill when the piece is an **Article** — `category` is `articles` *or* `comparison`. Both use the same format; `comparison` differs only in routing (it sets `category=comparison` and carries extra routing meta tags — see the website build requirements). For any other type, stop and use the owning skill; flag the mismatch to the author rather than reshaping their piece.\n\n## The structure\n\nUse this skeleton for Fleet articles — thought-leadership posts, how-to articles, and comparison pieces. Not every article needs every section, but the order is fixed.\n\n```\n# Title (sentence case)\n*Italic dek — one or two sentences.*\n\n## Key takeaways\n- **Bold lead-in.** One to three sentences, outcome-first. (5–6 bullets.)\n\n<a purpose=\"cta-button\" href=\"https://fleetdm.com/relevant-page\">Short action label</a>\n\n[Intro — keep it short (about two short paragraphs); it opens the body proper.]\n\n## [Body section]\n### [Subsection]\n...\n\n## [Closing section]\n[Short recap or stakes, then the through-line.]\n\n## See it live\n[Optional next-steps block: a guide link plus one or two demo/workshop bullets.]\n```\n\n### Title\n\nSentence case, not Title Case. Lead with the reader's outcome or the tension, not the product name. \"How Fleet completes your Microsoft stack\" reads better than \"Fleet: The Complete Microsoft Integration Platform.\"\n\n### Dek (the italic line under the title)\n\nOne or two sentences, italicized. It frames the question the piece answers or the payoff the reader gets — it does not summarize the whole article. Think of it as the reason to keep reading. If the piece has a meta description, the dek can be a sharper, more human version of it.\n\n### Key takeaways — the heart of the format\n\n- Place it immediately after the dek, before the intro and the first body section. Nothing but the title and dek comes before it — the reader gets the whole argument at the very top of the page.\n- 5–6 bullets. Each bullet: `**Bold lead-in phrase.**` followed by one to three sentences.\n- **Lead with the business outcome, not the feature.** The bold phrase should state what's true for the reader or what they get (\"Fleet sees it across every OS, in real time\"), and the sentences explain why it matters. Avoid bullets that just name a feature.\n- **Each takeaway previews a body section** — there should be a rough one-to-one mapping. If a takeaway has no home in the body, either cut it or add the section.\n- **Preview, don't echo.** Do not copy a full sentence verbatim from the body into a takeaway. Say the same idea in different words. If the reader sees the identical sentence twice within a few hundred words, the takeaway reads as padding.\n- **Takeaways must stand alone.** Because they now precede the intro, they can't lean on any setup — each bullet has to make sense to a reader who has read only the title and dek.\n\n**Example of a strong takeaway (outcome-first, previews a section):**\n> **Governance is code, not console clicks.** Reports and policies live in Git as YAML, get reviewed in a pull request, and deploy through CI, so your AI governance posture is auditable and reversible instead of a click someone made six months ago.\n\n**Weaker version (feature-first, no stakes):**\n> **GitOps support.** Fleet supports managing policies and reports as YAML in Git with CI/CD.\n\n### CTA button after the key takeaways\n\nPlace a single call-to-action button directly after the key takeaways list, before the intro.\n\n- **Syntax:** `<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">Short action label</a>` — an established pattern that renders as Fleet's primary (green) button in the article body. Use a full `https://fleetdm.com/…` URL, as existing articles do.\n- **Make it relevant to the piece.** Match label and destination to the argument: \"See config-as-code in Fleet\" → `/infrastructure-as-code` for a config-as-code post, \"Compare features\" → `/pricing` for a comparison, \"Get a demo\" → `/contact` as the default.\n- **One button only.** The fuller menu of next steps belongs in the closing CTA, not here. If the closing block also offers \"Get a demo,\" vary the top button so the two CTAs aren't identical.\n\n### Intro\n\nThe intro comes **after** the CTA button and opens the body proper. Keep it short — aim for about two short paragraphs. It can be narrative (\"I've spent the last few months talking with teams…\") or direct (\"Your organization runs on Microsoft.\"), but it should end on a bridge that hands the reader into the first body section — a question, a stakes statement, or a \"here's where the answer lives\" line.\n\nBecause the takeaways have already summarized the argument, the intro doesn't need to — its job is to set up the problem and pull the still-reading reader into the body. If it runs past two paragraphs, fold the setup together and cut. Don't restate the takeaways in prose; that reads as padding coming right after them.\n\n### Body\n\n`##` for sections, `###` for subsections, all sentence case. Lead each section with its point, then support it. Use concrete, grounded specifics (real version numbers, real table names, real CVE-feed names) wherever you have them — specificity is what separates Fleet content from generic vendor copy.\n\nFor **integration or comparison pieces**, the cooperative \"Fleet + X\" section framing works well (e.g. \"Fleet + Microsoft Intune,\" \"Fleet + your SIEM\"): name the other tool, give it genuine credit for what it does well, then show precisely where Fleet adds depth. This reads as confident rather than defensive. (Thought-leadership and how-to pieces don't need this framing — use plain topic headers.)\n\n### Closing\n\nA short section that restates the stakes (\"The risk of waiting is real\") and lands the through-line. Do **not** re-list every key takeaway here — that's the most common bloat. One or two synthesizing sentences, then the closing line.\n\n### CTA\n\nFleet pieces typically carry two calls to action, and they play different roles:\n\n- **The post-takeaways button** (above) — one button, high on the page, for the reader who's already convinced.\n- **The closing CTA** — at the foot of the article, a fuller menu of next steps. This is a short \"See it live\" block (a guide link plus one or two bullets such as **Get a demo** → `/contact` and **Join a GitOps training session** → `/gitops-workshop`). Keep it to the actions that genuinely fit the piece; real links only. Don't add a horizontal rule or a trailing italic CTA line after it — the website renders its own divider below the article.\n\n### Endmatter\n\nEvery article ends with the `<meta>` block from [`content-style/references/content-types.md`](../content-style/references/content-types.md). Emit it as part of the draft; `assets/article-template.md` already carries it. Two fields need care:\n\n- `articleTitle` matches the H1 exactly, character for character.\n- **`description` must be 150 characters or fewer.** This is enforced by the website build, not a style preference: `website/scripts/build-static-content.js` throws `An article page has an invalid description meta tag` and fails the whole production build for any article over the limit. It applies to every content type that uses this endmatter, articles and comparisons included. Count the characters rather than eyeballing it, since a description that reads like one or two sentences lands near 150 more often than you'd expect. Trim words, don't drop the substance.\n\nNever fabricate `authorFullName`, `authorGitHubUsername`, or `publishedOn`. If you don't have them, leave the placeholders and tell the author which fields to fill in.\n\n## Voice and terminology\n\nFleet's voice is confident, specific, and honest. It respects the reader's intelligence and never oversells.\n\n### Terminology rules\n\n- **Say \"Fleet's agent\" or \"fleetd,\" not \"osquery,\"** in marketing and customer-facing content. \"Queryable,\" \"query,\" and \"live query\" are fine as descriptors; in product-facing CTAs Fleet often prefers \"report.\" Don't expose raw upstream project names where \"Fleet's agent\" reads cleaner.\n- **Sentence case** for all headings and for credential/product names (\"Certified Fleet expert,\" not \"Certified Fleet Expert\").\n- Name competitors and other tools plainly and fairly — no scare quotes, no snark. The argument should win on substance.\n\n### Honest-claims guardrails\n\nFleet content earns trust by being accurate. This is non-negotiable and applies whether drafting or editing.\n\n- **Never invent an integration, capability, or parity claim.** If you're not certain Fleet does something, don't assert it. Verify against Fleet's docs (fleetdm.com), the changelog, or ask the author.\n- **Hedge where the truth is partial.** Prefer \"tends to wave it through\" over \"is completely blind to\"; prefer \"you can pipe Fleet data into Sentinel via your existing pipeline\" over implying a turnkey native connector that may not exist. Accurate-but-modest beats impressive-but-wrong every time.\n- **Ground specifics.** Tie capability claims to real versions/features when you can (\"landed for macOS in Fleet 4.70.0, extended to Windows in 4.84.0\"). Flag any claim you couldn't verify so a human can check it before publishing.\n- Cross-platform coverage (macOS, Windows, Linux, and beyond) is usually Fleet's strongest differentiator — surface it, but only where it's genuinely relevant to the point.\n\n### Formatting restraint\n\nDefault to prose. Use bullets and tables only where a list genuinely earns its place — enumerations (e.g. a fixed checklist you're contrasting against), step sequences, code, or scannable reference. Don't bullet a narrative. Don't bold half the sentence. The key takeaways are the one section that's intentionally list-heavy; the body should breathe.\n\n### De-duplication\n\nEach distinct point gets one primary home. A claim that appears five times across a piece loses force and bloats length. The takeaways preview the body, but beyond that, if you find the same idea stated in two sections, keep it in the stronger one and cut or cross-reference the other. When a point legitimately belongs in two places (takeaway + body), vary the wording so it reads as deliberate, not duplicated.\n\n## Workflow: writing a new piece\n\n1. Confirm the piece is an **article** (not a case study, announcement, or guide) and pin down the article type (thought-leadership, how-to, or comparison) and the single main argument.\n2. Draft the body sections first — that's where the substance is. Ground every claim; flag anything unverified.\n3. Write the dek and the intro. Keep the intro to about two short paragraphs; it opens the body, so end it on a bridge into the first section.\n4. Derive the **key takeaways** from the finished body: one outcome-first bullet per major section, 5–6 total, previewing without echoing. Place them immediately after the dek, before the intro — each bullet must stand alone with no setup.\n5. Add the **post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label and destination relevant to the piece.\n6. Write the closing and the closing CTA.\n7. Run the `content-style` skill over the whole draft for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: updating and enhancing existing content\n\nUse this to bring older Fleet content up to the current format. Work through it in order.\n\n1. **Confirm it's an article.** Check the `<meta name=\"category\" ...>` value against the Content types table. If it's `articles` or `comparison`, proceed. Otherwise stop — this format doesn't apply; tell the author rather than reshaping their piece.\n2. **Read the whole piece** and identify its main argument and its natural section breaks.\n3. **Add a dek** if there isn't one — an italic one-or-two-sentence framing under the title.\n4. **Insert a \"Key takeaways\" section** immediately after the dek, before the intro. Derive 5–6 outcome-first bullets, roughly one per major section. Make them preview the body without copying sentences out of it, and make sure each stands alone — the reader hasn't seen the intro yet.\n5. **Add the post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label/destination relevant to the piece.\n6. **Tighten the intro** to about two short paragraphs. It now follows the CTA button and opens the body, so it should set up the problem and bridge into the first section — not restate the takeaways.\n7. **Sweep terminology**: replace \"osquery\" with \"Fleet's agent\"/\"fleetd\" in prose, fix Title Case headings to sentence case, fix capitalized credential/product names.\n8. **De-duplicate**: find claims repeated across sections and keep each in its strongest single home.\n9. **Verify claims**: check every capability/integration/parity statement against Fleet's docs or the changelog. Soften or correct anything unsupported; flag anything you can't confirm for the author.\n10. **Trim over-formatting**: convert bullet-soup back to prose where a list isn't earning its place; reduce stray bolding.\n11. **Preserve structural metadata** (meta tags, author fields, frontmatter, existing links) exactly — don't drop them in the rewrite.\n12. **Run the `content-style` skill** over the revised prose — it owns the voice, sentence case, em-dash, filler, and terminology rules referenced in the steps above; let it be the final word on word-level style.\n13. Run the self-check below, then summarize the changes you made and list any claims you flagged for human verification.\n\n## Self-check before finishing\n\n- Title is sentence case and outcome-led; there's an italic dek that frames rather than summarizes.\n- \"Key takeaways\" sits immediately after the dek, before the intro: 5–6 outcome-first bullets, each previewing a section, each standing alone, none echoing a body sentence verbatim.\n- A single CTA button follows the key takeaways and precedes the intro, with a label and destination relevant to the piece.\n- The intro is short (about two short paragraphs), doesn't restate the takeaways, and ends on a bridge into the first body section.\n- Body sections lead with their point and use grounded specifics; comparison pieces credit the other tool before adding depth.\n- No \"osquery\" in customer-facing prose; headings and credential names are sentence case.\n- Every capability claim is true and grounded; partial truths are hedged; unverified claims are flagged.\n- No idea is repeated across sections without a reason; formatting is restrained outside the takeaways.\n- Closing lands the through-line without re-listing the takeaways; the top button and closing CTA aren't identical, and all links are real.\n- Endmatter is present, `articleTitle` matches the H1 exactly, and `description` is 150 characters or fewer (counted, not estimated). Author and date are real or flagged, never invented.\n- The `content-style` skill has been run over the prose, and its voice, grammar, and terminology guidance is satisfied.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/article-template.md`. Start new articles from it when helpful.\n",".claude/skills/fleet-gitops/SKILL.md":"# fleet-gitops\n\nPath: `.claude/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/SKILL.md)",".claude/skills/fleet-guide-formatting/SKILL.md":"# fleet-guide-formatting\n\nPath: `.claude/skills/fleet-guide-formatting/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/SKILL.md)",".claude/skills/handbook-pr/SKILL.md":"# handbook-pr\n\nPath: `.claude/skills/handbook-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/SKILL.md)",".claude/skills/lint/SKILL.md":"# lint\n\nPath: `.claude/skills/lint/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/lint/SKILL.md)",".claude/skills/new-endpoint/SKILL.md":"# new-endpoint\n\nPath: `.claude/skills/new-endpoint/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-endpoint/SKILL.md)",".claude/skills/new-fma/SKILL.md":"# new-fma\n\nPath: `.claude/skills/new-fma/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/SKILL.md)",".claude/skills/new-migration/SKILL.md":"# new-migration\n\nPath: `.claude/skills/new-migration/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-migration/SKILL.md)",".claude/skills/openspec-apply-change/SKILL.md":"# openspec-apply-change\n\nPath: `.claude/skills/openspec-apply-change/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-apply-change/SKILL.md)",".claude/skills/openspec-archive-change/SKILL.md":"# openspec-archive-change\n\nPath: `.claude/skills/openspec-archive-change/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-archive-change/SKILL.md)",".claude/skills/openspec-explore/SKILL.md":"# openspec-explore\n\nPath: `.claude/skills/openspec-explore/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-explore/SKILL.md)",".claude/skills/openspec-propose/SKILL.md":"# openspec-propose\n\nPath: `.claude/skills/openspec-propose/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-propose/SKILL.md)",".claude/skills/project/SKILL.md":"# project\n\nPath: `.claude/skills/project/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/project/SKILL.md)",".claude/skills/push-reference-docs/SKILL.md":"# push-reference-docs\n\nPath: `.claude/skills/push-reference-docs/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/push-reference-docs/SKILL.md)",".claude/skills/release-retro/SKILL.md":"# release-retro\n\nPath: `.claude/skills/release-retro/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/release-retro/SKILL.md)",".claude/skills/review-pr/SKILL.md":"# review-pr\n\nPath: `.claude/skills/review-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/review-pr/SKILL.md)",".claude/skills/spec-story/SKILL.md":"# spec-story\n\nPath: `.claude/skills/spec-story/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/SKILL.md)",".claude/skills/test/SKILL.md":"# test\n\nPath: `.claude/skills/test/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/test/SKILL.md)",".claude/skills/tier-modes/SKILL.md":"# tier-modes\n\nPath: `.claude/skills/tier-modes/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/tier-modes/SKILL.md)",".claude/skills/vuln-triage/SKILL.md":"# vuln-triage\n\nPath: `.claude/skills/vuln-triage/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/vuln-triage/SKILL.md)",".claude/skills/who-blocks-this-pr/SKILL.md":"# who-blocks-this-pr\n\nPath: `.claude/skills/who-blocks-this-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/who-blocks-this-pr/SKILL.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md":"# fleet-gitops\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md)","cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md":"# fleet-gitops\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md)","AGENTS.md":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/AGENTS.md)",".claude/CLAUDE.md":"# .claude - Claude Agent Guidelines & System Prompt\n\nPath: `.claude/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/CLAUDE.md)","tools/README.md":"# tools Documentation\n\nPath: `tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/README.md)",".claude/agents/fleet-security-auditor.md":"# Subagent: fleet-security-auditor\n\nPath: `.claude/agents/fleet-security-auditor.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/fleet-security-auditor.md)",".claude/agents/frontend-reviewer.md":"# Subagent: frontend-reviewer\n\nPath: `.claude/agents/frontend-reviewer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/frontend-reviewer.md)",".claude/agents/go-reviewer.md":"# Subagent: go-reviewer\n\nPath: `.claude/agents/go-reviewer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/go-reviewer.md)",".claude/rules/fleet-api.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-api.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-api.md)",".claude/rules/fleet-database.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-database.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-database.md)",".claude/rules/fleet-frontend.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-frontend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-frontend.md)",".claude/rules/fleet-go-backend.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-go-backend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-go-backend.md)",".claude/rules/fleet-orbit.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-orbit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-orbit.md)","tools/api/README.md":"# api Documentation\n\nPath: `tools/api/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/api/README.md)","tools/apm-elastic/README.md":"# apm-elastic Documentation\n\nPath: `tools/apm-elastic/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/apm-elastic/README.md)","tools/backup_db/README.md":"# backup_db Documentation\n\nPath: `tools/backup_db/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/backup_db/README.md)","tools/calendar/README.md":"# calendar Documentation\n\nPath: `tools/calendar/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/calendar/README.md)","tools/charts-backfill/README.md":"# charts-backfill Documentation\n\nPath: `tools/charts-backfill/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-backfill/README.md)","tools/charts-collect/README.md":"# charts-collect Documentation\n\nPath: `tools/charts-collect/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-collect/README.md)","tools/custom-package-parser/README.md":"# custom-package-parser Documentation\n\nPath: `tools/custom-package-parser/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/README.md)","tools/custom-package-parser/tests.md":"# Custom-package-parser Skill\n\nPath: `tools/custom-package-parser/tests.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/tests.md)","tools/desktop-rate-limit/README.md":"# desktop-rate-limit Documentation\n\nPath: `tools/desktop-rate-limit/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/desktop-rate-limit/README.md)","tools/dibble/README.md":"# dibble Documentation\n\nPath: `tools/dibble/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/dibble/README.md)","tools/file-server/README.md":"# file-server Documentation\n\nPath: `tools/file-server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/file-server/README.md)","tools/fleet-slackbot/README.md":"# fleet-slackbot Documentation\n\nPath: `tools/fleet-slackbot/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/README.md)","tools/fleet-slackbot/package.json":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/package.json)","tools/fleet-slackbot/render.yaml":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/render.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/render.yaml)","tools/fleet-slackbot/slack-manifest.json":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/slack-manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/slack-manifest.json)","tools/fleetctl-docker/README.md":"# fleetctl-docker Documentation\n\nPath: `tools/fleetctl-docker/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-docker/README.md)","tools/fleetctl-npm/README.md":"# fleetctl-npm Documentation\n\nPath: `tools/fleetctl-npm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/README.md)","tools/fleetctl-npm/package.json":"# Fleetctl-npm Skill\n\nPath: `tools/fleetctl-npm/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/package.json)","tools/fleetd-linux/README.md":"# fleetd-linux Documentation\n\nPath: `tools/fleetd-linux/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetd-linux/README.md)","tools/github-manage/README.md":"# github-manage Documentation\n\nPath: `tools/github-manage/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/README.md)","tools/gitops-auto-complete/README.md":"# gitops-auto-complete Documentation\n\nPath: `tools/gitops-auto-complete/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/README.md)","tools/gitops-auto-complete/generated-schema.json":"# Gitops-auto-complete Skill\n\nPath: `tools/gitops-auto-complete/generated-schema.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/generated-schema.json)","tools/hangar/README.md":"# hangar Documentation\n\nPath: `tools/hangar/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/README.md)","tools/kubequery/README.md":"# kubequery Documentation\n\nPath: `tools/kubequery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/kubequery/README.md)","tools/migration-cleanup/CHANGELOG.md":"# Migration-cleanup Skill\n\nPath: `tools/migration-cleanup/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/CHANGELOG.md)","tools/migration-cleanup/README.md":"# migration-cleanup Documentation\n\nPath: `tools/migration-cleanup/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/README.md)","tools/msal/README.md":"# msal Documentation\n\nPath: `tools/msal/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/msal/README.md)","tools/mysql-replica-testing/README.md":"# mysql-replica-testing Documentation\n\nPath: `tools/mysql-replica-testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-replica-testing/README.md)","tools/oncall/README.md":"# oncall Documentation\n\nPath: `tools/oncall/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/oncall/README.md)","tools/osquery-agent-options/README.md":"# osquery-agent-options Documentation\n\nPath: `tools/osquery-agent-options/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-agent-options/README.md)","tools/osquery-testing/README.md":"# osquery-testing Documentation\n\nPath: `tools/osquery-testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-testing/README.md)","tools/osquery/README.md":"# osquery Documentation\n\nPath: `tools/osquery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/README.md)","tools/qacheck/README.md":"# qacheck Documentation\n\nPath: `tools/qacheck/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/qacheck/README.md)","tools/redis-stress/README.md":"# redis-stress Documentation\n\nPath: `tools/redis-stress/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-stress/README.md)","tools/release/README.md":"# release Documentation\n\nPath: `tools/release/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/README.md)","tools/saml/README.md":"# saml Documentation\n\nPath: `tools/saml/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/saml/README.md)","tools/screencap/README.md":"# screencap Documentation\n\nPath: `tools/screencap/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/README.md)","tools/sentry-self-hosted/README.md":"# sentry-self-hosted Documentation\n\nPath: `tools/sentry-self-hosted/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/sentry-self-hosted/README.md)","tools/signoz/README.md":"# signoz Documentation\n\nPath: `tools/signoz/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/README.md)","tools/signoz/database_custom_dashboard.json":"# Signoz Skill\n\nPath: `tools/signoz/database_custom_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/database_custom_dashboard.json)","tools/signoz/host_cache_dashboard.json":"# Signoz Skill\n\nPath: `tools/signoz/host_cache_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/host_cache_dashboard.json)","tools/signoz/http_errors_dashboard.json":"# Signoz Skill\n\nPath: `tools/signoz/http_errors_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/http_errors_dashboard.json)","tools/team-builder/README.md":"# team-builder Documentation\n\nPath: `tools/team-builder/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/team-builder/README.md)","tools/telemetry/README.md":"# telemetry Documentation\n\nPath: `tools/telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/README.md)","tools/telemetry/otel-collector-config.yaml":"# Telemetry Skill\n\nPath: `tools/telemetry/otel-collector-config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/otel-collector-config.yaml)","tools/terraform/README.md":"# terraform Documentation\n\nPath: `tools/terraform/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/README.md)","tools/terraform/generator.yaml":"# Terraform Skill\n\nPath: `tools/terraform/generator.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/generator.yaml)","tools/terraform/openapi.json":"# Terraform Skill\n\nPath: `tools/terraform/openapi.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/openapi.json)","tools/test-certs/README.md":"# test-certs Documentation\n\nPath: `tools/test-certs/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-certs/README.md)","tools/test-orbit-mtls/README.md":"# test-orbit-mtls Documentation\n\nPath: `tools/test-orbit-mtls/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-orbit-mtls/README.md)","tools/tuf/README.md":"# tuf Documentation\n\nPath: `tools/tuf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/README.md)","tools/upgrade/README.md":"# upgrade Documentation\n\nPath: `tools/upgrade/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/upgrade/README.md)","tools/webhook/README.md":"# webhook Documentation\n\nPath: `tools/webhook/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/webhook/README.md)",".claude/commands/opsx/apply.md":"# Command: /apply\n\nPath: `.claude/commands/opsx/apply.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/apply.md)",".claude/commands/opsx/archive.md":"# Command: /archive\n\nPath: `.claude/commands/opsx/archive.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/archive.md)",".claude/commands/opsx/explore.md":"# Command: /explore\n\nPath: `.claude/commands/opsx/explore.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/explore.md)",".claude/commands/opsx/propose.md":"# Command: /propose\n\nPath: `.claude/commands/opsx/propose.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/propose.md)",".claude/skills/spec-story/README.md":"# Spec-story Skill\n\nPath: `.claude/skills/spec-story/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/README.md)","ee/tools/license/README.md":"# license Documentation\n\nPath: `ee/tools/license/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/README.md)","ee/tools/license/package.json":"# License Skill\n\nPath: `ee/tools/license/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/package.json)","ee/tools/mdm/README.md":"# mdm Documentation\n\nPath: `ee/tools/mdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/mdm/README.md)","orbit/tools/windows/profiling_process.md":"# Windows Skill\n\nPath: `orbit/tools/windows/profiling_process.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/tools/windows/profiling_process.md)","tools/android/cert-auth-server/README.md":"# cert-auth-server Documentation\n\nPath: `tools/android/cert-auth-server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/android/cert-auth-server/README.md)","tools/ci/helm-values/custom-annotations.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/custom-annotations.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/custom-annotations.yaml)","tools/ci/helm-values/disable-fleet-tls.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/disable-fleet-tls.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/disable-fleet-tls.yaml)","tools/ci/helm-values/enable-cloudsql-proxy.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/enable-cloudsql-proxy.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-cloudsql-proxy.yaml)","tools/ci/helm-values/enable-mysql-tls.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/enable-mysql-tls.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-mysql-tls.yaml)","tools/ci/helm-values/environments-scalar-values.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/environments-scalar-values.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/environments-scalar-values.yaml)","tools/ci/helm-values/logger-firehose-accesssid.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-firehose-accesssid.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-accesssid.yaml)","tools/ci/helm-values/logger-firehose-sts.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-firehose-sts.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-sts.yaml)","tools/ci/helm-values/logger-pubsub.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-pubsub.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-pubsub.yaml)","tools/hangar/frontend/package.json":"# Frontend Skill\n\nPath: `tools/hangar/frontend/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/package.json)","tools/hangar/frontend/tsconfig.json":"# Frontend Skill\n\nPath: `tools/hangar/frontend/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/tsconfig.json)","tools/loadtest/fleetd_labels/README.md":"# fleetd_labels Documentation\n\nPath: `tools/loadtest/fleetd_labels/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/fleetd_labels/README.md)","tools/loadtest/metrics/README.md":"# metrics Documentation\n\nPath: `tools/loadtest/metrics/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/README.md)","tools/loadtest/osquery/README.md":"# osquery Documentation\n\nPath: `tools/loadtest/osquery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/osquery/README.md)","tools/loadtest/scripts_and_profiles/README.md":"# scripts_and_profiles Documentation\n\nPath: `tools/loadtest/scripts_and_profiles/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/scripts_and_profiles/README.md)","tools/loadtest/unified_queue/README.md":"# unified_queue Documentation\n\nPath: `tools/loadtest/unified_queue/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/unified_queue/README.md)","tools/mdm/apple/glossary-and-protocols.md":"# Apple Skill\n\nPath: `tools/mdm/apple/glossary-and-protocols.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/glossary-and-protocols.md)","tools/mdm/apple/toggle-mdm-dev.md":"# Apple Skill\n\nPath: `tools/mdm/apple/toggle-mdm-dev.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/toggle-mdm-dev.md)","tools/mdm/apple/troubleshooting.md":"# Apple Skill\n\nPath: `tools/mdm/apple/troubleshooting.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/troubleshooting.md)","tools/mdm/assets/README.md":"# assets Documentation\n\nPath: `tools/mdm/assets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/assets/README.md)","tools/mysql-tests/rds/README.md":"# rds Documentation\n\nPath: `tools/mysql-tests/rds/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/README.md)","tools/mysql-tests/rds/cf-template.yaml":"# Rds Skill\n\nPath: `tools/mysql-tests/rds/cf-template.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/cf-template.yaml)","tools/nvd/nvdvuln/README.md":"# nvdvuln Documentation\n\nPath: `tools/nvd/nvdvuln/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/nvd/nvdvuln/README.md)","tools/osquery/in-a-box/README.md":"# in-a-box Documentation\n\nPath: `tools/osquery/in-a-box/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/in-a-box/README.md)","tools/percona/pmm/README.md":"# pmm Documentation\n\nPath: `tools/percona/pmm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/pmm/README.md)","tools/percona/test/README.md":"# test Documentation\n\nPath: `tools/percona/test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/test/README.md)","tools/redis-tests/elasticache/README.md":"# elasticache Documentation\n\nPath: `tools/redis-tests/elasticache/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/README.md)","tools/redis-tests/elasticache/cf-template.yaml":"# Elasticache Skill\n\nPath: `tools/redis-tests/elasticache/cf-template.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/cf-template.yaml)","tools/release/calendar-sync/README.md":"# calendar-sync Documentation\n\nPath: `tools/release/calendar-sync/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/calendar-sync/README.md)","tools/screencap/workflows/test.json":"# Workflows Skill\n\nPath: `tools/screencap/workflows/test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/workflows/test.json)","tools/seed_data/queries/README.md":"# queries Documentation\n\nPath: `tools/seed_data/queries/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/seed_data/queries/README.md)","tools/software/icons/README.md":"# icons Documentation\n\nPath: `tools/software/icons/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/icons/README.md)","tools/software/packages/README.md":"# packages Documentation\n\nPath: `tools/software/packages/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/packages/README.md)","tools/software/vulnerabilities/README.md":"# vulnerabilities Documentation\n\nPath: `tools/software/vulnerabilities/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/README.md)","tools/tuf/status/README.md":"# status Documentation\n\nPath: `tools/tuf/status/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/status/README.md)","tools/tuf/test/Fleetd-auto-update-test-guide.md":"# Test Skill\n\nPath: `tools/tuf/test/Fleetd-auto-update-test-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/Fleetd-auto-update-test-guide.md)","tools/tuf/test/README.md":"# test Documentation\n\nPath: `tools/tuf/test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/README.md)",".claude/skills/api-design-check/references/conventions.md":"# References Skill\n\nPath: `.claude/skills/api-design-check/references/conventions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/api-design-check/references/conventions.md)",".claude/skills/content-style/references/content-types.md":"# References Skill\n\nPath: `.claude/skills/content-style/references/content-types.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/content-types.md)",".claude/skills/content-style/references/positioning.md":"# References Skill\n\nPath: `.claude/skills/content-style/references/positioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/positioning.md)",".claude/skills/content-style/references/style-rules.md":"# References Skill\n\nPath: `.claude/skills/content-style/references/style-rules.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/style-rules.md)",".claude/skills/fleet-article-formatting/assets/article-template.md":"# Assets Skill\n\nPath: `.claude/skills/fleet-article-formatting/assets/article-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-article-formatting/assets/article-template.md)",".claude/skills/fleet-case-study-formatting/assets/case-study-template.md":"# Assets Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/assets/case-study-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/assets/case-study-template.md)",".claude/skills/fleet-case-study-formatting/references/canonical-examples.md":"# References Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/references/canonical-examples.md)",".claude/skills/fleet-gitops/references/profiles-android.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-android.md)",".claude/skills/fleet-gitops/references/profiles-apple.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-apple.md)",".claude/skills/fleet-gitops/references/profiles-windows.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-windows.md)",".claude/skills/fleet-gitops/references/queries.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/queries.md)",".claude/skills/fleet-gitops/references/software.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/software.md)",".claude/skills/fleet-gitops/scripts/validate.py":"# Claude Directive: validate.py\n\nPath: `.claude/skills/fleet-gitops/scripts/validate.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/scripts/validate.py)",".claude/skills/fleet-guide-formatting/references/canonical-examples.md":"# References Skill\n\nPath: `.claude/skills/fleet-guide-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/canonical-examples.md)",".claude/skills/fleet-guide-formatting/references/template.md":"# References Skill\n\nPath: `.claude/skills/fleet-guide-formatting/references/template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/template.md)",".claude/skills/handbook-pr/scripts/check-handbook-diff.sh":"# Claude Directive: check-handbook-diff.sh\n\nPath: `.claude/skills/handbook-pr/scripts/check-handbook-diff.sh`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/scripts/check-handbook-diff.sh)",".claude/skills/new-fma/references/identity-verification.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/identity-verification.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/identity-verification.md)",".claude/skills/new-fma/references/queries.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/queries.md)",".claude/skills/new-fma/references/script-comments.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/script-comments.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/script-comments.md)",".claude/skills/new-fma/references/validator-failures.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/validator-failures.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/validator-failures.md)",".claude/skills/new-fma/references/windows-scripts.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/windows-scripts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/windows-scripts.md)",".claude/skills/new-fma/scripts/burn_ux.py":"# Claude Directive: burn_ux.py\n\nPath: `.claude/skills/new-fma/scripts/burn_ux.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/burn_ux.py)",".claude/skills/new-fma/scripts/check_queries.sh":"# Claude Directive: check_queries.sh\n\nPath: `.claude/skills/new-fma/scripts/check_queries.sh`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/check_queries.sh)",".claude/skills/new-fma/scripts/pe_info.py":"# Claude Directive: pe_info.py\n\nPath: `.claude/skills/new-fma/scripts/pe_info.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/pe_info.py)","ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json":"# winget Plugin Manifest\n\nPath: `ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json)","ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json":"# winget Plugin Manifest\n\nPath: `ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json)","ee/tools/puppet/fleetdm/CHANGELOG.md":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CHANGELOG.md)","ee/tools/puppet/fleetdm/CONTRIBUTING.md":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/CONTRIBUTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CONTRIBUTING.md)","ee/tools/puppet/fleetdm/README.md":"# fleetdm Documentation\n\nPath: `ee/tools/puppet/fleetdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/README.md)","ee/tools/puppet/fleetdm/hiera.yaml":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/hiera.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/hiera.yaml)","ee/tools/puppet/fleetdm/metadata.json":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/metadata.json)","orbit/pkg/table/ai_tools/README.md":"# ai_tools Documentation\n\nPath: `orbit/pkg/table/ai_tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/pkg/table/ai_tools/README.md)","server/vulnerabilities/nvd/tools/HOWTO.md":"# Tools Skill\n\nPath: `server/vulnerabilities/nvd/tools/HOWTO.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/HOWTO.md)","server/vulnerabilities/nvd/tools/README.md":"# tools Documentation\n\nPath: `server/vulnerabilities/nvd/tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/README.md)","tools/github-manage/pkg/ghapi/README.md":"# ghapi Documentation\n\nPath: `tools/github-manage/pkg/ghapi/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/README.md)","tools/github-manage/pkg/ghapi/TEST_SUMMARY.md":"# Ghapi Skill\n\nPath: `tools/github-manage/pkg/ghapi/TEST_SUMMARY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/TEST_SUMMARY.md)","tools/mdm/apple/appmanifest/README.md":"# appmanifest Documentation\n\nPath: `tools/mdm/apple/appmanifest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/appmanifest/README.md)","tools/mdm/apple/loadtest/README.md":"# loadtest Documentation\n\nPath: `tools/mdm/apple/loadtest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/loadtest/README.md)","tools/mdm/apple/macos-vm-auto-enroll/README.md":"# macos-vm-auto-enroll Documentation\n\nPath: `tools/mdm/apple/macos-vm-auto-enroll/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/macos-vm-auto-enroll/README.md)","tools/mdm/apple/setupexperience/README.md":"# setupexperience Documentation\n\nPath: `tools/mdm/apple/setupexperience/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/setupexperience/README.md)","tools/mdm/migration/echo/README.md":"# echo Documentation\n\nPath: `tools/mdm/migration/echo/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/echo/README.md)","tools/mdm/migration/jamf/README.md":"# jamf Documentation\n\nPath: `tools/mdm/migration/jamf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/jamf/README.md)","tools/mdm/migration/kandji/README.md":"# kandji Documentation\n\nPath: `tools/mdm/migration/kandji/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/kandji/README.md)","tools/mdm/migration/mdmproxy/README.md":"# mdmproxy Documentation\n\nPath: `tools/mdm/migration/mdmproxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/mdmproxy/README.md)","tools/mdm/migration/micromdm/README.md":"# micromdm Documentation\n\nPath: `tools/mdm/migration/micromdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/README.md)","tools/mdm/migration/simplemdm/README.md":"# simplemdm Documentation\n\nPath: `tools/mdm/migration/simplemdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/simplemdm/README.md)","tools/software/vulnerabilities/performance_test/README.md":"# performance_test Documentation\n\nPath: `tools/software/vulnerabilities/performance_test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/README.md)","ee/tools/puppet/fleetdm/data/common.yaml":"# Data Skill\n\nPath: `ee/tools/puppet/fleetdm/data/common.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/data/common.yaml)","tools/loadtest/metrics/runs/historical/README.md":"# historical Documentation\n\nPath: `tools/loadtest/metrics/runs/historical/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/README.md)","tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json":"# Transfertest Skill\n\nPath: `tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json)","tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md":"# Transfertest Skill\n\nPath: `tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md)","tools/mdm/migration/micromdm/touchless/README.md":"# touchless Documentation\n\nPath: `tools/mdm/migration/micromdm/touchless/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/touchless/README.md)","tools/software/vulnerabilities/performance_test/seeder/README.md":"# seeder Documentation\n\nPath: `tools/software/vulnerabilities/performance_test/seeder/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/seeder/README.md)","ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml":"# Fixtures Skill\n\nPath: `ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml)","tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json":"# 483loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json)","tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json":"# 484loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json)","tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md":"# 484loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md)","tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json":"# 485loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json)","tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md":"# 485loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md)","tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json":"# 486loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json)","tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md":"# 486loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md)","tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json":"# 487loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json)","tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md":"# 487loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md)","tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json":"# 489loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json)","tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md":"# 489loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md)","tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json":"# 490loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json)","tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md":"# 490loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md)","tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json":"# 491loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json)","tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md":"# 491loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json":"# 492loadtest-orbit0 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md":"# 492loadtest-orbit0 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md)","tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json":"# 4460loadtesto2 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json)","tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json":"# 4630loadtestbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json)","tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json":"# 4640loadtest-gabe Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json)","tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json":"# 4640loadtestbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json)","tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json":"# 4640loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json)","tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json":"# 4640ltvulnbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json)","tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json":"# 4650loadtestj1 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json)","tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json":"# 4650lt0311 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json)","tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json":"# 4650wincptest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json)","tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json":"# 4660loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json)","tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json":"# 4670loadtestj Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json)","tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json":"# 4673to468mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json)","tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json":"# 4680loadtest02 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json)","tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json":"# 468to469mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json)","tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json":"# 4690loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json)","tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json":"# 469to470mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json)","tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json":"# 470loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json)","tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json":"# 470to471mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json)","tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json":"# 4711to472mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json)","tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json":"# 471loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json)","tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json":"# 4720mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json)","tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json":"# 472loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json)","tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json":"# 4735orch3 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json)","tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json":"# 473loadtest-w3 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json)","tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json":"# 473mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json)","tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json":"# 473to474mig-w1 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json)","tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json":"# 4740mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json)","tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json":"# 4740orch Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json)","tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json":"# 474to475mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json)","tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json":"# 4750orchl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json)","tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json":"# 4750orchl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json)","tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json":"# 475to476mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json)","tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json":"# 476loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json)","tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json":"# 476to477mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json)","tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json":"# 4770loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json)","tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json":"# 477loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json)","tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json":"# 477to478mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json)","tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json":"# 478loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json)","tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json":"# 478to479mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json)","tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json":"# 479loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json)","tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json":"# 479to480mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json)","tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json":"# 480loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json)","tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json":"# 480to481mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json)","tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json":"# 481loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json)","tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json":"# 481to482mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json)","tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json":"# 482loadtest-30 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json)","tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json":"# 482loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json)","tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json":"# 482plusvc Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json)","tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json":"# 482to483mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json)","tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json":"# 483to484mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json)","tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json":"# 484to485mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json)","tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json":"# Andrey-481 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json)","tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json":"# Mig66to68 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json)","tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json":"# Qa-42544 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md)","tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json":"# 484win-release Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json)","tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md":"# 484win-release Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md)","tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md)","tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json":"# 490windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json)","tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md":"# 490windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md)","tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json":"# 485to486mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json)","tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md":"# 485to486mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md)","tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json":"# 486to487mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json)","tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md":"# 486to487mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md)","ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml":"# Hieradata Skill\n\nPath: `ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md)"},"files":{".claude/skills/aikido-tickets/SKILL.md":"---\nname: aikido-tickets\ndescription: Create GitHub issues in fleetdm/confidential for Aikido pen test findings. Use when asked to \"create aikido tickets\", \"aikido ticket\", or \"create pen test tickets\".\nallowed-tools: Bash(gh *), Bash(jq *), Read, Grep, Glob, Agent, Write\nmodel: sonnet\neffort: high\n---\n\n# Create Aikido Pen Test Tickets\n\nCreate GitHub issues in `fleetdm/confidential` for Aikido penetration test findings.\n\n## Prerequisites\n\nBefore starting, walk the user through these steps:\n\n### 1. Export the Aikido report\n\nThe user needs to download the pen test report PDF from Aikido:\n\n1. Go to the Aikido assessment page (e.g., `app.aikido.dev/ai-pentests/projects/.../assessments/.../issues`)\n2. Click the purple **\"Download Report\"** button in the top-right corner\n3. Select **\"Detailed Auditor Report\"** (this contains every finding with technical details and remediation steps)\n4. Click **Continue** and save the downloaded PDF\n5. Provide the path to the downloaded PDF\n\n### 2. GitHub project board permissions\n\nAdding issues to project boards requires the `project` scope on the GitHub CLI token. Test by running:\n\n```bash\ngh project list --owner fleetdm --limit 1\n```\n\nIf this fails with a scope error, the user needs to run interactively:\n\n```bash\ngh auth refresh -s project -h github.com\n```\n\n**Alternative:** If the user cannot or prefers not to grant project scope, skip the project board step. The issues will still be created with correct labels and assignment. The user (or their manager) can manually drag them into the correct project board column afterward.\n\n## Inputs\n\nAsk the user for these if not provided:\n\n- **Pen test PDF report path:** Path to the downloaded Aikido detailed auditor report PDF\n- **PT ID(s):** Which PT-* findings to create tickets for (specific IDs, a range, or \"all\")\n- **Team:** Which team owns the findings (determines labels, project board, and parent story)\n- **Assignee:** GitHub username to assign the tickets to\n- **Parent story:** The confidential issue number that tracks these findings (e.g., #16715)\n\n## Teams and project boards\n\n| Team | Label | GitHub Project |\n|------|-------|----------------|\n| Orchestration | `#g-orchestration` | https://github.com/orgs/fleetdm/projects/71/ |\n| Supply Chain | `#g-supply-chain` | https://github.com/orgs/fleetdm/projects/97/ |\n| MDM | `#g-mdm` | https://github.com/orgs/fleetdm/projects/58/ |\n| Software | `#g-software` | https://github.com/orgs/fleetdm/projects/70/ |\n| First Impressions | `#g-first-impressions` | https://github.com/orgs/fleetdm/projects/105/ |\n\nIf the user specifies a team not listed here, ask for the team label and project URL/number.\n\n## Ticket format\n\n### Title\n```\nAikido-PT-{number} [{SEVERITY}]: {concise title from the finding}\n```\n\n### Body structure\n\n```markdown\n## {concise title}\n\n{1-2 sentence explanation of what is wrong}\n\nSee full details below.\n\n### Attack path\n\n{Concise but complete description of how an attacker exploits this vulnerability}\n\n### Fix\n\n**Option 1 (recommended):** {Best fix approach described concisely}\n\n{Only add Option 2, Option 3 etc. if there are genuinely different viable approaches. If one fix is clearly best, only list that one.}\n\n---\n\n**Aikido ref:** PT-{number} | CVSS {score} | `{primary affected file}`\n**Parent story:** #{parent_story_number}\n\n---\n\n<details>\n<summary>Aikido pen test details (PT-{number})</summary>\n\n{Full content from the Aikido PDF report for this finding, including:}\n### Description\n{original description}\n\n### Business impact\n{original business impact}\n\n### How to exploit\n{all exploit steps with code blocks}\n\n### Remediation\n{all remediation bullets from the report}\n\n### References\n{CVSS score and vector}\n\n</details>\n```\n\n## Process\n\n1. **Read the finding** from the pen test PDF report. Locate each finding by its `PT-{N}` header rather than guessing page numbers. Scan for `2.3.X PT-{N} - {Title}` headers in the detailed findings section (starts around page 15). Read pages in chunks to find the right section.\n\n2. **Write the ticket body** following the format above:\n   - The top section (title, explanation, attack path, fix) is YOUR synthesis of the finding, written concisely\n   - The foldable `<details>` section at the bottom contains the ORIGINAL Aikido report content verbatim\n\n3. **Write the body to a temp file and create the issue:**\n   ```bash\n   # Write body to temp file to avoid shell escaping issues\n   cat > /tmp/aikido-pt-{N}.md << 'BODY'\n   {body content}\n   BODY\n\n   gh issue create --repo fleetdm/confidential \\\n     --title \"Aikido-PT-{N} [{SEVERITY}]: {title}\" \\\n     --assignee {assignee} \\\n     --label \"bug,~security,~vulnerability-management,{team_label},p3\" \\\n     --body-file /tmp/aikido-pt-{N}.md\n   ```\n\n4. **Add to the correct project board and set status to Ready:**\n   ```bash\n   # Get project node ID\n   PROJECT_NODE_ID=$(gh api graphql -f query='{ organization(login: \"fleetdm\") { projectV2(number: {project_number}) { id } } }' | jq -r '.data.organization.projectV2.id')\n\n   # Add to project\n   ITEM_ID=$(gh project item-add {project_number} --owner fleetdm --url {issue_url} --format json | jq -r '.id')\n\n   # Get Status field ID and Ready option ID\n   READY_INFO=$(gh project field-list {project_number} --owner fleetdm --format json | jq '.fields[] | select(.name == \"Status\")')\n   STATUS_FIELD_ID=$(echo \"$READY_INFO\" | jq -r '.id')\n   READY_OPTION_ID=$(echo \"$READY_INFO\" | jq -r '.options[] | select(.name | test(\"Ready\")) | .id')\n\n   # Set to Ready\n   gh project item-edit --project-id $PROJECT_NODE_ID --id $ITEM_ID --field-id $STATUS_FIELD_ID --single-select-option-id $READY_OPTION_ID\n   ```\n\n   If the project scope is not available, inform the user that tickets were created but need to be manually added to the project board.\n\n5. **Report** the created issue URL to the user.\n\n## Batch creation\n\nWhen creating many tickets at once, delegate to subagents via the `Agent` tool. Launch the whole batch of subagents in a single message so findings are processed concurrently.\n\nSplit the requested findings into groups of ~5-7 and spawn one subagent per group (aim for 5-6 subagents at a time). Give each subagent its assigned `PT-{N}` list and instruct it to:\n\n- Locate each finding by its `PT-{N}` header and read those pages of the PDF\n- Draft the ticket body and write it to a temp file\n- Create the issue with `--body-file`, correct labels, and assignee\n- Add each issue to the project board and set status to Ready\n- Return the created issue URLs (and any failures) so the run is resumable\n\n## Important notes\n\n- All tickets go in `fleetdm/confidential` (private repo) since they contain security findings\n- Always use `p3` priority label unless the user specifies otherwise\n- Always use `bug` label (not `story`)\n- The foldable `<details>` section preserves the full Aikido evidence for reference\n- When creating many tickets, read the PDF pages for each finding to get accurate details\n- For the Fix section: if one fix is clearly the best, only list that one. Only list multiple options if there are genuinely different viable approaches\n- Fetch project field IDs at runtime rather than hardcoding, since they can change across projects\n",".claude/skills/bump-migration/SKILL.md":"---\nname: bump-migration\ndescription: Bump a database migration's timestamp to the current time. Required when a PR's migration is older than one already merged to main. Use when asked to \"bump migration\", \"update migration timestamp\", or when a migration ordering conflict is detected.\nallowed-tools: Bash(go run *), Bash(make dump-test-schema*), Bash(git diff*), Bash(ls *), Read, Grep, Glob\nmodel: sonnet\neffort: medium\n---\n\n# Bump a database migration timestamp\n\nBump the migration: $ARGUMENTS\n\n## When to use\n\nThis is required when a PR has a database migration with a timestamp older than a migration already merged to main. This happens when a PR has been pending merge for a while and another PR got merged with a more recent migration.\n\n## Process\n\n### 1. Identify the migration to bump\n\nIf the user provided a filename, use that. Otherwise, find migrations on this branch that are older than the latest on main:\n\n```bash\n# List migrations on this branch that aren't on main\ngit diff origin/main --name-only -- server/datastore/mysql/migrations/tables/\n```\n\n### 2. Run the bump tool\n\nThe tool lives at `tools/bump-migration/main.go`. Run it from the repo root:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go\n```\n\nThis will:\n- Rename the migration file with a new current timestamp\n- Rename the test file (if it exists)\n- Update all function names inside both files (`Up_OLDTS` → `Up_NEWTS`, `Down_OLDTS` → `Down_NEWTS`, `TestUp_OLDTS` → `TestUp_NEWTS`)\n\n### 3. Optionally regenerate the schema\n\nIf the migration affects the schema, add `--regen-schema` to also run `make dump-test-schema`:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go --regen-schema\n```\n\n### 4. Verify\n\n- Check that the old files are gone and new files exist with the updated timestamp\n- Verify the function names inside the files match the new timestamp\n- Run `go build ./server/datastore/mysql/migrations/...` to check compilation\n\n## Rules\n- Always run from the repo root\n- Provide the migration filename, not the test filename\n- The tool handles both the migration and its test file automatically\n",".claude/skills/cherry-pick/SKILL.md":"---\nname: cherry-pick\ndescription: Cherry-pick a merged PR into the current RC branch. Use when asked to \"cherry-pick\", \"cp into RC\", or after merging a PR that needs to go into the current release.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(gh api *), Read, Grep, Glob\neffort: low\n---\n\nCherry-pick a merged PR into the current RC branch. Arguments: $ARGUMENTS\n\nUsage: `/cherry-pick <PR_NUMBER> [RC_BRANCH]`\n\n- `PR_NUMBER` (required): The PR number to cherry-pick (e.g. `43078`). If not provided, ask the user.\n- `RC_BRANCH` (optional): The target RC branch name (e.g. `rc-minor-fleet-v4.83.0`). If not provided, auto-detect the most recent one.\n\n## Step 1: Ensure main is up to date\n\n1. `git fetch origin`\n2. `git checkout main`\n3. `git pull origin main`\n\n## Step 2: Identify the RC branch\n\nIf an RC branch was provided as the second argument, use it (but still confirm with the user before proceeding).\n\nOtherwise, auto-detect by listing both minor and patch RC branches:\n\n```\ngit for-each-ref 'refs/remotes/origin/rc-minor-fleet-v*' 'refs/remotes/origin/rc-patch-fleet-v*' --format='%(refname:strip=3)' | grep -E '^rc-(minor|patch)-fleet-v[0-9]+\\.[0-9]+\\.[0-9]+$' | sort -V\n```\n\nFrom the results, suggest the most recent `rc-minor-fleet-v*` branch as the default. If patch branches also exist, mention them as alternatives. **Always ask the user to confirm the target RC branch before proceeding.**\n\n## Step 3: Get the merge commit and GitHub username\n\n1. Get the PR title:\n   ```\n   gh pr view <PR_NUMBER> --json title --jq .title\n   ```\n2. Get the merge commit SHA:\n   ```\n   gh pr view <PR_NUMBER> --json mergeCommit --jq .mergeCommit.oid\n   ```\n   If this returns `null` or an empty value, the PR is not yet merged. Tell the user and stop.\n3. Get the GitHub username: `gh api user --jq .login`\n\n## Step 4: Cherry-pick onto a new branch\n\n1. Create a new branch off the RC branch:\n   ```\n   git checkout -b <github-username>/<short-description>-cp origin/<rc-branch>\n   ```\n   Derive `<short-description>` from the PR title (lowercase, hyphens, keep it short — 3-5 words max).\n2. Check whether the commit is a merge commit by inspecting its parents:\n   ```\n   git rev-list --parents -n 1 <merge-commit-SHA>\n   ```\n   If the commit has multiple parents, run:\n   ```\n   git cherry-pick -m 1 <merge-commit-SHA>\n   ```\n   Otherwise (squash-merged or rebased), run:\n   ```\n   git cherry-pick <merge-commit-SHA>\n   ```\n3. If there are conflicts, stop and tell the user which files conflict. Do NOT attempt to resolve them automatically.\n\n## Step 5: Push and open PR\n\n1. Push the branch: `git push -u origin HEAD`\n2. Open a PR targeting the RC branch (NOT main):\n   ```\n   gh pr create --base <rc-branch> --title \"Cherry-pick #<PR_NUMBER>: <original-title>\" --body \"$(cat <<'EOF'\n   Cherry-pick of #<PR_NUMBER> into the RC branch.\n   EOF\n   )\"\n   ```\n3. Report the PR URL to the user.\n",".claude/skills/command-palette/SKILL.md":"---\nname: command-palette\ndescription: Authoring guide for the Fleet command palette. Use when adding or editing items in frontend/components/CommandPalette/groups/, when editing frontend/router/paths.ts or frontend/router/index.tsx, or when adding a new top-level page, global create action, MDM connector / singleton config, automation hook, or picker action that needs a palette entry.\nallowed-tools: Read, Grep, Glob, Bash(yarn test*)\neffort: medium\n---\n\n# Command palette authoring\n\nThe canonical guide lives in **`frontend/docs/patterns.md` § Command palette** — read that first. It covers what belongs (and what doesn't), the group-to-file mapping, required/optional fields, label conventions, the full keyword/synonym checklist, permission gating, `teamName` chips, search-only items, and test expectations.\n\nThis skill exists to make sure that guide gets followed when palette-worthy changes land.\n\n## Before adding an item\n\n1. **Read `frontend/docs/patterns.md` § Command palette** end to end.\n2. **Grep the target group file** for similar existing items. Match their shape — field order, keyword style, gating, `teamName` helper usage — instead of inventing a new pattern. The groups are the source of truth for current conventions:\n   ```\n   frontend/components/CommandPalette/groups/\n   ```\n3. **Confirm the destination page's own permission check**, then mirror it on the palette item using a flag from `ICommandPaletteContext` (`frontend/components/CommandPalette/helpers.ts`). Add a new flag there only if no existing one models the destination's check. Don't route users to a screen they can't use.\n4. **Premium paywall check:** if the destination page (or the specific tab/section the link lands on) renders `<PremiumFeatureMessage />` for `!isPremiumTier`, gate the palette item on `isPremiumTier` so it's hidden on Free. A palette entry that lands on the upsell wall is a bait-and-switch — the palette is for actions, not for marketing the paid tier. Mirror tab-level paywalls too (e.g., `paths.ADMIN_INTEGRATIONS_SSO_END_USERS` lands on a Premium-only tab even though the parent SSO page works on Free). If the destination only paywalls a sub-section (not the whole page or the linked tab), don't gate — the page is still useful on Free.\n\n## After adding an item\n\n1. **Update `frontend/components/CommandPalette/helpers.tests.ts`**:\n   - Assert the item appears for the right roles and hides for the wrong ones\n   - If premium-only: assert absence in the `Fleet Free (isPremiumTier: false)` block\n   - If hidden in primo mode: add to the `Primo Mode (isPrimoMode: true)` block\n   - If it sets a `teamName` chip: assert it renders / doesn't render against the relevant fleet contexts\n2. Run the palette tests:\n   ```\n   yarn test frontend/components/CommandPalette/helpers.tests.ts\n   ```\n   (Note: test files use `.tests.ts` plural, and `yarn test` — not `yarn jest` — uses the project's jest config.)\n\n## When *not* to add an entry\n\n- Per-entity edit / delete operations (the entity is already in scope on its row or detail page)\n- Bulk-select operations that depend on an existing selection\n- One-off UI affordances (toggles, expanders) tied to a single view\n\nSee patterns.md for the dividing line and the full \"doesn't belong\" list.\n",".claude/skills/ai-profile-test/SKILL.md":"---\nname: ai-profile-test\ndescription: Propose a new prompt test case for the AI configuration profile generator's test suite and open a PR. Use when asked to \"add a profile generator test\", \"propose a prompt test case\", \"add a test prompt for AI profiles\", or when a generated profile came out wrong and the failure should become a regression test.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(node *), Bash(cd website && sails run *), Bash(cd website && npm run test-profile-generator *), Read, Grep, Glob, Edit, WebFetch, WebSearch\neffort: medium\n---\n\nAdd a test case to `website/profile-generator/configuration-profile-generator-cases.js` and open a PR. That file is shared by two runners: the mocha suite (`website/profile-generator/tests/configuration-profile-generator.test.js`, one `it()` per case) and the `test-llm-generated-configuration-profile` script (repeated runs with `--parallelTests`). Adding the case to `TEST_CASES` registers it with both — don't edit either runner. Arguments: $ARGUMENTS\n\nUsage: `/ai-profile-test \"<natural-language instruction>\" [csp|mobileconfig|ddm]`\n\n- The instruction is what an admin would type into the profile generator (e.g. `\"Disable the camera\"`). If not provided, ask for it.\n- The profile type is inferred from the instruction when obvious (Windows policy → `csp`; Apple → `mobileconfig` or `ddm`). Ask only if genuinely ambiguous.\n\n## Step 1: Branch off main\n\nThe test cases file only exists on `main` — your current branch (e.g. an RC branch) may not have it.\n\n```\ngit fetch origin\ngit checkout -b add-profile-test-<short-slug> origin/main\n```\n\n## Step 2: Check for existing coverage\n\nRead every entry in `TEST_CASES` in the cases file. If an existing case already exercises the same concrete setting — the same CSP policy node, mobileconfig payload key, or DDM setting key — with the same intended behavior, or a near-identical instruction, STOP and report the overlap to the user instead of opening a PR. Sweep by the exact key name (e.g. `RemovableDiskDenyWriteAccess`), not just by instruction wording.\n\nSharing a payload type or DDM declaration type alone is NOT duplicate coverage — the suite deliberately has multiple cases per declaration (e.g. `ddm-beta-enroll` and `ddm-beta-block` both use `softwareupdate.settings`; the two intelligence cases share `intelligence.settings`). A new setting inside an already-covered declaration or payload still needs its own case.\n\n## Step 3: Verify the mechanism against vendor docs\n\nDo NOT write assertions from memory — a plausible-but-wrong key produces a test that enforces the wrong output forever. Confirm the exact key names, casing, value types, and allowed values:\n\n- **csp**: Microsoft CSP reference (`learn.microsoft.com/en-us/windows/client-management/mdm/`) — exact OMA-URI node path, `Format`, allowed values.\n- **mobileconfig**: Apple's per-payload YAML schemas (`github.com/apple/device-management`, `mdm/profiles/` — e.g. `com.apple.applicationaccess.yaml`) — `PayloadType`, key names with exact casing, value types, allowed values. The rendered docs (`developer.apple.com/documentation/devicemanagement/profile-specific-payload-keys`) cover the same payloads but are JS-rendered; the YAML is easier to fetch and is the source the docs are built from.\n- **ddm**: Apple's declarative device management schemas (same repo, `declarative/declarations/`) — declaration `Type` and payload keys.\n\nKeep the URL(s) you verified against — they go in the PR body so the reviewer can check the assertions without redoing the research.\n\n## Step 4: Write the case\n\nRead the `CASES` comment above `TEST_CASES` first — it documents the assertion design. Then follow the file's conventions:\n\n- `id`: `<profileType>-<short-slug>`, unique across the file.\n- `instructions`: phrased the way an admin would type it, matching the tone of neighboring cases. Don't name the platform — the profile type implies it.\n- `expect`: substring assertions only (compared with all whitespace stripped):\n  - `mustContain` / `mustNotContain`: raw substrings.\n  - `mustContainElement` / `mustNotContainElement`: `[tag, value]` pairs, e.g. `['Format', 'int']` or `['key', 'autohide']` — XML only (csp and mobileconfig). They compile to `<tag>value</tag>` regexes, so in a DDM case they never match the JSON output and a `mustNotContainElement` silently passes. DDM cases express keys and values as raw `mustContain` / `mustNotContain` substrings like `'\"MinorPeriodInDays\":30'`, following the existing DDM cases.\n  - Bind a value to its key as one adjacent-pair substring — whitespace stripping makes `'<key>allowBookstore</key><true/>'` work. Asserting the key and the value separately lets a value elsewhere in the profile satisfy the check.\n  - `mustNotContainOutsideCdata`: `mustNotContain` with CDATA sections blanked first — for rules about the profile itself rather than a document it transports (e.g. `'<?xml'` in a CSP case whose CDATA carries a WLANProfile).\n  - Assert against the tempting wrong answers too: the lookalike key that doesn't do what the instruction asks, wrong casing, `bool` where the CSP wants `int`, an inverted value.\n- `readByEye`: only for properties assertions can't express (one dict per payload domain, distinct PayloadUUIDs, single-line CDATA). Omit otherwise.\n- Do NOT set `canary: true` — canaries are a curated set of exact-substring sentinel cases, not a flag for new proposals.\n- Append the case to the end of its profile-type section (`CSP` / `MOBILECONFIG` / `DDM`).\n\n## Step 5: Validate\n\nAlways: `node --check website/profile-generator/configuration-profile-generator-cases.js`\n\nIf a website dev environment with an Anthropic API key is available, run the case for real (it spends API money — a few cents per run). Either runner works; the mocha suite checks one generation (including the 10s latency budget), the script measures how often it passes:\n\n```\ncd website && sails_custom__anthropicSecret='…' npm run test-profile-generator -- --grep '<id>:'\ncd website && sails run test-llm-generated-configuration-profile --caseId=<id> --parallelTests=3\n```\n\nSkipping this when the environment isn't available is fine — but the PR body must say whether the case was run against the live model or not.\n\n## Step 6: Open the PR\n\n1. Commit with a subject like `Website: Add profile generator test case for <thing>`.\n2. Push and open a PR against `main` with the body built from `.github/pull_request_template.md` (the `check-pr-template` CI check fails freeform descriptions).\n3. The body must include: what the case asserts and why, the vendor doc URL(s) from Step 3, whether the case was run against the live model, and the `sails run … --caseId=<id> --parallelTests=5` command for the reviewer.\n",".claude/skills/api-design-check/SKILL.md":"---\nname: api-design-check\ndescription: Check a proposed or changed Fleet REST API endpoint against existing API conventions (URL shape, parameter names, pagination, response envelope, status codes, Fleets/Reports naming, Premium markers, api_endpoints.yml). Use when asked to \"check API conventions\", \"review this API design\", \"is this endpoint consistent\", or when reviewing a reference-docs PR labeled ~api-or-yaml-design.\nallowed-tools: Read, Grep, Glob, Bash\neffort: high\n---\n\n# Check an API design against existing Fleet conventions\n\nTarget: $ARGUMENTS\n\nThe target can be a PR number, a branch, a spec file, or a pasted endpoint. With no target, use the current branch's diff against `main`.\n\nFleet has no written API style guide. The rule is \"be consistent with what's already there\", so this check compares the proposal with **real existing endpoints**. `references/conventions.md` records the patterns that are hard to infer from a single neighbor.\n\n## 1. Collect the proposed endpoints\n\n- **Docs PR or branch**: diff `docs/API/rest-api.md` (and `docs/Contributing/reference/api-for-contributors.md` for internal endpoints). Each endpoint is a `### Heading`, then a `` `METHOD /api/v1/fleet/...` `` line, then `#### Parameters`, `#### Example`, and `##### Default response`.\n- **Code**: diff `server/service/handler.go` and `ee/server/service/handler.go` for new `ue.GET/POST/PATCH/PUT/DELETE` registrations. Read the matching request and response structs for the parameter and response field names.\n- **Spec or pasted text**: read the endpoint definitions directly.\n\nFor each endpoint, write down: the method, the path, the parameters (name, type, `in`), the response body keys, the status code, and whether it's Premium.\n\n## 2. Find the closest existing endpoints\n\nFor each proposed endpoint, find 2–4 existing endpoints to compare it with, in `docs/API/rest-api.md`. Use them in this order:\n\n1. The same resource with a different verb. For a new `PATCH /fleet/foo/:id`, compare `GET /fleet/foo/:id` and `POST /fleet/foo`.\n2. The same kind of operation on a sibling resource. A new list endpoint is compared with other `List ...` endpoints, a host-scoped action with other `POST /hosts/:id/...` actions, and a Fleet Desktop endpoint with other `/device/:token/...` endpoints.\n3. Recently added endpoints over old ones when they disagree. Check with `git log -S '<path>' --format='%h %ad' --date=short -- \"docs/API/rest-api.md\"`. Older endpoints are often the inconsistent ones.\n\nQuote the neighbor you compared against in each finding. A finding with no existing endpoint as evidence is an opinion, so drop it or label it as one.\n\n## 3. Check each dimension\n\nGo through `references/conventions.md` section by section. At minimum, check these:\n\n- **URL**: the resource noun and its plural form, snake_case, path parameter names, and where it sits in the hierarchy (`/hosts/:id/...`, `/device/:token/...`, `/spec/...`, `.../batch`).\n- **Method and verb**: the HTTP method matches the heading verb (List/Get/Create/Add/Update/Delete), and actions are `POST` to a sub-path.\n- **Parameters**: the names and types of shared parameters (`fleet_id`, `page`, `per_page`, `order_key`, `order_direction`, `after`, `query`, `platform`, `labels_include_any`, ...), and that `In` (path/query/body/form) is correct. A path parameter documented as `body` is a doc bug.\n- **Response**: the list envelope (`{\"<plural>\": [...], \"meta\": {...}}` and/or `count`), the single-object shape (a bare object or wrapped in `{\"<singular>\": {...}}`, matching the resource's other endpoints), IDs as integers, timestamps as RFC 3339 UTC, and snake_case keys.\n- **Status codes**: 200 for normal success, 202 for queued or async host actions, 204 for no body, and 201 only for SCIM. Error codes should match the semantics neighbors use (409 conflict, 422 validation, 404 not found).\n- **Terminology**: new names use `fleet`/`fleets` and `report`/`reports`, never `team`/`query` in the product sense. Renamed fields need the `renameto` alias in code.\n- **Premium and auth**: the `_Available in Fleet Premium._` marker on Premium-only parameters and endpoints, and a documented non-default auth (node key, device token).\n- **Registration**: the new endpoint is listed in `server/api_endpoints/api_endpoints.yml` with a display name that matches the doc heading.\n- **Doc structure**: the section order, a `Default response` with `Status:`, an example that uses realistic IDs, and a link from the section's table of contents.\n\n## 4. Report\n\nGroup the findings like this:\n\n1. **Inconsistent**: the proposal deviates from a clear majority pattern. Show the proposed value, the existing convention, and 1–2 neighbor endpoints as evidence.\n2. **Split convention**: existing endpoints disagree (`conventions.md` marks these). Don't pick a winner. Name both patterns and say that it's a call for the API design DRI.\n3. **Doc nits**: wrong `In` column, a missing `Status:` line, an anchor not in the TOC, and so on.\n\nKeep it short: one line per finding plus the evidence. If a dimension is consistent, don't list it. End by saying which endpoints were compared.\n\nDon't edit files or post on GitHub. This is a read-only check.\n",".claude/skills/content-style/SKILL.md":"---\nname: content-style\ndescription: Write, edit, and review any public-facing or customer/prospect-facing Fleet content so it follows Fleet's writing, brand, voice, and style guidelines. Use this whenever you create or change the words in website copy (fleetdm.com), handbook pages, docs, guides, tutorials, articles, blog posts, announcements, release notes, product UI text and microcopy, GitHub issues about content, or marketing and sales enablement material, even if the user never says \"style guide.\" Trigger on edits under website/, handbook/, docs/, articles/, and on requests like \"write a blog post,\" \"draft an announcement,\" \"review this guide for style,\" \"make this sound like Fleet,\" \"tighten this up,\" or \"clean up this copy.\" This skill is for authoring and editing prose for voice, brand, and style. It does not apply to writing code, tests, scripts, commit messages, or internal team chat, even when those happen to mention articles, announcements, blog posts, or UI strings.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet content style\n\nProduce and refine written content that sounds like Fleet: radically honest, technically precise, and \"Mister Rogers\" kind. The reader is an IT professional, client platform engineer, or security practitioner. Write to them as a helpful expert peer, never as a salesperson.\n\nThis skill works both inside the Fleet repo and outside it. The rules below are self-contained, but when the handbook is present it is the source of truth — read it first so you always reflect the latest guidance.\n\n## When you start\n\n1. **Identify the content type and the mode.** Type drives format discipline: website copy, guide/tutorial, article/blog, announcement, docs reference, product UI text, or marketing/sales enablement. Mode is either *writing new* content or *reviewing/editing existing* content. If the type or intended placement is unclear, ask — don't guess, because format rules differ by type.\n\n2. **Load the canonical guidelines if they exist.** When working in a repo that contains them, read these before writing, since they may have been updated since this skill was written:\n   - `handbook/company/writing.md` — the full writing guide: style, headings, links, lists, and numbers (start here)\n   - `handbook/company/brand.md` — visual brand, naming, imagery\n   If they aren't present (e.g. drafting external copy), use the embedded rules below.\n\n3. **For marketing and sales content, align positioning.** Read `references/positioning.md` — a brief distilled from the \"Implicating the pain\" positioning doc and the \"Fleet for IT engineers and admins\" sales deck (links inside). It covers the audience's pains, the \"implicate the pain\" narrative method, Fleet's differentiators, and messaging do's and don'ts. Treat its proof points as needing verification: never publish a stat, customer quote, or named claim without confirming it against a public, approved source, and ask the user if you can't.\n\n4. **Read the full rules for anything non-trivial.** `references/style-rules.md` has the complete mechanics with examples; `references/content-types.md` has per-type format discipline and the article/guide/announcement endmatter templates. The checklist below is the fast path, not the whole story.\n\n## The core of Fleet's voice\n\n- **Plain English, short sentences, active voice.** One idea per sentence. If a sentence runs past ~20 words, split it. \"Fleet manages hosts,\" not \"Hosts are managed by Fleet.\"\n- **Imperative mood for instructions.** \"Click **Save**,\" not \"You should click Save.\"\n- **Clarity over cleverness.** If a sentence is clever but obscures meaning, rewrite it. The goal is for the reader to understand, not for the writer to look smart.\n- **Radical honesty.** State bugs, limitations, and gaps plainly. Never use marketing spin to hide them.\n- **No snark, no hype.** Treat the reader as an equal. Never condescending, edgy, or sarcastic.\n\n## High-frequency rules (the fast checklist)\n\nThese are the rules content most often gets wrong. Apply them on every pass.\n\n- **Sentence case everywhere** — headings, subheadings, buttons, UI labels. \"Host details,\" not \"Host Details.\" Only proper nouns, acronyms, and self-styled names (macOS, osquery) keep their casing.\n- **Commas, not em dashes.** Avoid em dashes entirely. Use a comma, a colon, or a new sentence. This is the single most common AI tell to strip.\n- **Oxford comma, always.** \"macOS, Windows, and Linux.\"\n- **Bold UI elements only.** \"Navigate to **Hosts**.\" Never bold for emphasis or to decorate. Excessive bolding is an AI tell.\n- **Cut filler.** Delete \"very,\" \"really,\" \"actually,\" \"basically,\" \"essentially,\" and \"just.\" Use common words: \"help,\" not \"facilitate.\"\n- **No hyperbole.** Strip \"revolutionary,\" \"game-changing,\" \"seamless,\" \"powerful,\" \"robust,\" \"unprecedented,\" \"industry-leading,\" \"best-in-class.\"\n- **Fleet naming.** The product and company are **Fleet** (or Fleet Device Management) — never \"FleetDM,\" \"fleetDM,\" or \"fleetdm\" in prose. Lowercase `osquery`, `fleetctl`, `fleetd` (rewrite the sentence if one would start it). Capitalize Fleet Desktop and Orbit.\n- **Preferred terms.** Use \"hosts,\" \"devices,\" \"computers,\" \"Fleet UI,\" \"Fleet server.\" Avoid \"agents\" and \"nodes.\" Prefer \"device\" over \"endpoint.\"\n- **No fabrication.** Never invent features, URLs, names, dates, version numbers, or CLI commands. If you don't have something you need, ask — it's better not to know than to make it up.\n- **Strip AI intros.** No \"In the rapidly evolving world of…,\" no throat-clearing. Lead with the substance.\n\n## Writing mode\n\nDraft directly in the target format and apply the rules as you write — don't write loose prose and clean it up after. Lead with the \"why\" before the \"how.\" Match the format discipline for the content type (see `references/content-types.md`): guides get numbered steps, announcements lead with the news, website copy is scannable and benefit-focused, articles are conversational but professional.\n\nBefore presenting a draft, do one self-review pass against the checklist above, reading specifically for em dashes, over-bolding, filler, hype, and sentence-case slips — these survive even careful first drafts.\n\n## Review / edit mode\n\nWhen the user hands you existing content (or you're editing files in a diff):\n\n1. Read the content and identify its type.\n2. Go through it against the checklist and the full rules, noting each issue with its location.\n3. Apply the fixes directly (Edit), or if the user wants a critique, report findings as a short list grouped by rule — quote the original, give the corrected version, and name the rule. Keep it specific and actionable; don't pad with praise.\n4. Preserve the author's meaning and technical accuracy. Style edits must never change facts. If a sentence is factually unclear, flag it rather than rewriting it into something that might be wrong.\n\nWhen in doubt, simplify.\n",".claude/skills/fix-ci/SKILL.md":"---\nname: fix-ci\ndescription: Diagnose and fix failing CI tests from a GitHub Actions run. Use when asked to \"fix CI\", \"CI failure\", or \"failing tests in CI\".\nallowed-tools: Bash(gh *), Bash(go test *), Bash(go build *), Bash(MYSQL_TEST*), Bash(MYSQL_TEST=1 REDIS_TEST=1 *), Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1 *), Read, Grep, Glob, Edit\nmodel: opus\neffort: high\n---\n\nFix failing tests from a CI run. The argument is a GitHub Actions run URL or run ID: $ARGUMENTS\n\n## Step 1: Identify failing jobs\n\nExtract the run ID from the URL (the numeric path segment after `/runs/`). Use `gh run view <run_id>` to list the jobs, then find the failing ones:\n\n```\ngh run view <run_id> --json jobs --jq '.jobs[] | select(.conclusion == \"failure\") | {name: .name, id: .databaseId}'\n```\n\nGroup the failing jobs by **test suite** (the first parenthesized token in the job name, e.g. `integration-core`, `integration-enterprise`, `service`, `mysql`, `main`). You only need to examine **one job per unique suite** since the matrix variants (OS, MySQL version) run the same tests.\n\n## Step 2: Find the failing tests in each suite\n\nFor each unique suite, fetch the job log and find the `FAIL: ` lines. IMPORTANT: use `gh api` (not `gh run view --log`, which may return empty):\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: ' | head -30\n```\n\nThis gives you the failing test function names and subtests. Ignore the parent test if subtests are listed (e.g. if `TestFoo` and `TestFoo/Bar` both appear, focus on `TestFoo/Bar`).\n\n## Step 3: Get error details\n\nFor each suite, fetch the error traces:\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: \\|Error Trace\\|Error:\\|expected:\\|actual:' | head -60\n```\n\nThis tells you the exact file/line and what the assertion expected vs. what it got.\n\n## Step 4: Diagnose each failure\n\nFor each failing test, read the test code at the indicated file and line. Determine whether the failure is:\n\n**A) A stale test assertion** — the test expects an old string/value but the production code was intentionally changed. The test needs updating to match the new behavior. Signs:\n- The expected value is an old error message string and the actual value is a new one\n- The change aligns with the intent of the current branch's modifications\n- The production code change looks intentional\n\n**B) A legitimate test failure** — the test is correct but the code under test is buggy. The production code needs fixing. Signs:\n- The test's expected value matches the documented/intended behavior\n- The actual value indicates a regression or bug\n- The test was not related to any intentional change on this branch\n\n## Step 5: Fix stale assertions (category A)\n\nFor each stale assertion:\n1. Read the test file\n2. Update the assertion to match the new expected value\n3. Also search for **other assertions in the same file** that check similar strings — CI only catches the first failure per test, so there may be additional stale assertions that haven't failed yet. Use Grep to find them.\n4. Also check for **related assertions in other test files** for the same error message pattern\n\n## Step 6: Report legitimate failures (category B)\n\nFor each legitimate failure, report to the user:\n- The test name and file location\n- What the test expects vs. what it got\n- Your analysis of why the production code is producing the wrong result\n- The production code file/line that likely needs fixing\n\nDo NOT fix production code bugs without user approval — only report them.\n\n## Step 7: Verify fixes\n\nAfter fixing stale assertions, run the affected tests locally to verify they pass:\n\n- `pkg/spec/...` and `server/fleet/...`: `go test -run 'TestName' ./pkg/spec/...`\n- `server/service/...` (unit tests like devices_test.go, scripts_test.go): `go test -run 'TestName' ./server/service/`\n- `ee/server/service/...`: `go test -run 'TestName' ./ee/server/service/`\n- `server/datastore/mysql/...`: `MYSQL_TEST=1 go test -run 'TestName' ./server/datastore/mysql/`\n- Integration tests (`integration_core_test.go`, `integration_enterprise_test.go`, `integration_live_queries_test.go`): these require `MYSQL_TEST=1 REDIS_TEST=1` and take a long time, so just verify compilation with `go build ./...`\n\nAfter running tests, also do a proactive Grep scan for any remaining old assertion strings in test files that might break in CI even though they didn't show up in this run (CI stops at the first failure per test function).\n\n## Step 8: Report summary\n\nPresent a summary to the user:\n- Total failing suites and tests found\n- How many were stale assertions (fixed) vs. legitimate failures (reported)\n- List of files modified\n- Any remaining concerns or tests that couldn't be verified locally\n",".claude/skills/fleet-case-study-formatting/SKILL.md":"---\nname: fleet-case-study-formatting\ndescription: Apply Fleet's house format, voice, and required meta tags to Fleet CASE STUDIES — customer success stories published under `<meta name=\"category\" value=\"case study\">`. Use when drafting a new case study from a customer interview/quotes, or editing, tightening, or auditing an existing one, even if the user doesn't say \"case study\" (triggers: \"customer story\", \"success story\", \"write up [Company]'s Fleet migration\", \"case study for X\", a request built from call notes/quotes about a customer's experience with Fleet). Governs the challenge → choosing Fleet → results structure, the `attribution-quote` and `checklist` custom divs, the case-study-specific endmatter (summaryChallenge/summarySolution/summaryKeyResults, company/quote meta tags) the website build enforces, and the non-negotiable rule that every quote is verbatim and every number is customer-sourced. Pair with content-style for word-level voice. Do NOT use for articles, guides, or announcements — those are separate content types with their own skills, even when they also tell a customer story.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet case study formatting\n\nA Fleet case study exists to let a skeptical prospect hear, in a real customer's own words, that switching to Fleet solved a specific problem. It is not an article, and it is not marketing copy dressed up with a logo — it's a structured, quote-driven narrative that the website renders into a dedicated template with a sidebar summary, a company card, and a hero pull-quote. This skill governs that **structure, custom syntax, and required meta tags**; pair it with `content-style` for word-level voice (sentence case, no em dashes, no filler, no hype).\n\n## Scope — when this skill applies\n\nApplies to pieces published under `<meta name=\"category\" value=\"case study\">` — a customer's story of adopting Fleet, told in three acts (their problem, why they chose Fleet, what changed) and anchored by real attributed quotes.\n\nDoes **not** apply to:\n\n- **Articles** (`category` = `articles` or `comparison`) — thought-leadership, how-to, comparison pieces. Use `fleet-article-formatting`.\n- **Guides** (`category` = `guides`) — step-by-step procedures. Use `fleet-guide-formatting`.\n- **Announcements** (`category` = `announcements`) — even when they narrate a customer's experience. `articles/deputy-achieves-compliance-and-clarity-with-fleet.md` is a real example: it reads like a case study but is tagged `announcements` and skips the case-study meta tags entirely. If a customer-story draft doesn't have (or won't have) the summary/quote/company meta tags below, it's probably meant to be an announcement or article, not a case study — ask rather than forcing this template on it.\n\nBefore applying this format, check the `<meta name=\"category\" ...>` value, or ask which type the piece is destined for.\n\n## Canonical examples\n\nRead one or two before writing a new case study — `articles/fastly.md`, `articles/stripe.md`, `articles/thumbtack.md`, `articles/mollie.md`, `articles/faire.md`, `articles/foursquare.md`, `articles/primo.md`. All follow the same skeleton with different section names suited to each story. See `references/canonical-examples.md` for a structural breakdown of each one.\n\n## The structure\n\n```\n# Title (sentence case, names the company and the outcome)\n\n## [Challenge section: \"The Challenge\" / \"Why [Company] needed a change\" / \"The search for a solution\"]\n[Narrative: the old tool/process, the pain, why it became untenable.]\n\n<div purpose=\"attribution-quote\">\n\n*Verbatim quote about the pain.*\n\n**Speaker name**\n\nTitle, Company\n</div>\n\n## [Decision section: \"Choosing Fleet\" / \"Why Fleet\" / \"The search for a solution\"]\n[Narrative: evaluation criteria, why Fleet won, how the switch went.]\n\n<div purpose=\"checklist\">        <!-- optional, for evaluation criteria or a short outcome list -->\n\nFirst criterion or result\n\nSecond criterion or result\n</div>\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Results section: \"The results\" / \"The outcome\"]\n[Narrative: quantified outcomes, what's different now.]\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Optional closing: \"Looking ahead\" / \"The future\"]\n[What's next for the partnership — a plan, an expansion, a platform they're evaluating next.]\n\n<meta name=\"category\" value=\"case study\">\n<meta name=\"articleTitle\" value=\"...\">\n<meta name=\"description\" value=\"...\">\n\n<meta name=\"publishedOn\" value=\"YYYY-MM-DD\">\n<meta name=\"authorGitHubUsername\" value=\"n/a\">\n<meta name=\"authorFullName\" value=\"Fleetdm\">\n\n<meta name=\"companyLogoFilename\" value=\"...\">\n<meta name=\"quoteAuthorImageFilename\" value=\"...\">\n<meta name=\"quoteAuthorName\" value=\"...\">\n<meta name=\"quoteAuthorJobTitle\" value=\"...\">\n<meta name=\"quoteContent\" value=\"...\">\n\n<meta name=\"companyName\" value=\"...\">\n<meta name=\"companyInfo\" value=\"...\">\n<meta name=\"companyInfoLineTwo\" value=\"...\">    <!-- optional -->\n\n<meta name=\"summaryChallenge\" value=\"...\">\n<meta name=\"summarySolution\" value=\"...\">\n<meta name=\"summaryKeyResults\" value=\"...; ...; ...\">\n```\n\n### Title\n\nSentence case (except the company name, which keeps its own capitalization). Names the company and states the outcome, not the feature: \"Fastly gains visibility into all endpoints and critical infrastructure worldwide,\" \"Stripe moved 10,000 Macs to Fleet, saving hundreds of thousands annually,\" \"Thumbtack migrates more than 90% of Macs with no IT intervention.\" \"How [Company] ...\" also works when the story is about a mechanism (\"How Mollie manages endpoint compliance the same way it ships software,\" \"How Primo built an HR-driven IT platform, powered by Fleet\").\n\n### The three-act narrative\n\nEvery canonical example is some variation of this arc, even though section headings differ story to story — pick headings that fit the story rather than copying one example's exact wording:\n\n1. **The problem.** What the customer used before (or the process they had), why it broke down, and the cost of that (wasted time, risk, a specific incident, slow vendor support). Ground it in specifics: real tool names, real numbers of devices, a real incident (Thumbtack's mis-set nudge-profile date; Stripe's fragmented API workarounds).\n2. **Choosing Fleet.** What they evaluated against (sometimes an explicit checklist of criteria), and why Fleet won. Tie each reason back to a capability, not a vague endorsement: API-first architecture enabling GitOps, open-source code enabling self-hosting or auditability, cross-platform coverage, responsive Slack-based support.\n3. **The results.** Quantified, concrete outcomes: migration speed and percentage, cost/licensing savings, headcount or ticket-volume effects, new capabilities unlocked. This is where a `checklist` div listing bullet-style results is most common.\n\nAn optional fourth section (\"Looking ahead,\" \"The future\") closes with what's next — expanded platform coverage, a deepening partnership, a new use case. Not every case study needs one; several of the canonical examples fold this into the results section instead.\n\n### Custom syntax\n\nTwo custom `<div purpose=\"...\">` blocks, unique to case studies (and rarely used elsewhere) — get them exactly right, the build pipeline and stylesheet depend on them:\n\n**`attribution-quote`** — a pull quote inside the body, attributed to a named speaker:\n\n```\n<div purpose=\"attribution-quote\">\n\n*Italicized verbatim quote, exactly as the customer said it.*\n\n**Speaker Name**\n\nTitle, Company\n</div>\n```\n\n- The quote line is italic (`*...*`), the name is bold (`**...**`), the title/company line is plain text. Blank lines between each are required for the markdown to render correctly.\n- Title and company can be one line (`Sr Manager Systems Engineering, Fastly`) or, when the company is already obvious from context, just the title.\n- Use 2-4 of these per case study, spaced through the narrative at the moments they land hardest — right after describing the pain, right after the \"why Fleet\" reasoning, and in the results section. Don't front-load them all in one place.\n\n**`checklist`** — a plain list of short items with no markdown bullet syntax, rendered as a checklist by the stylesheet:\n\n```\n<div purpose=\"checklist\">\n\nFirst item — a criterion, a feature, or a quantified result\n\nSecond item\n\nThird item\n</div>\n```\n\n- Items are separated by blank lines, not `-` or `*` bullets — the div's CSS supplies the checkmark styling.\n- Use it for evaluation criteria (Faire's three MDM-selection priorities) or a short, punchy results list (Foursquare's cost/time savings). Longer results lists (4+ items with more explanation) can also work as plain markdown bullets in the results section prose, as Thumbtack's and Primo's \"With Fleet, [Company] has:\" lists do — either is fine, pick whichever reads cleaner for the story.\n\n### Voice and honesty guardrails — stricter than other content types\n\nCase studies carry more risk than an article: every claim is attributed to a real person at a real company, and it gets fact-checked by that company before or after publishing.\n\n- **Quotes are verbatim, never paraphrased or invented.** If you don't have the customer's exact words for a moment the story needs, write the narrative around it without a quote, or flag it for the author to source a real quote. Do not manufacture a plausible-sounding quote and attribute it to a named person.\n- **Numbers come from the customer, not from you.** Migration percentages, device counts, cost savings, timeframes — these all must trace back to what the customer or the Fleet team working with them actually said. Flag any number you're inferring rather than quoting/sourcing directly.\n- **Name Fleet's own team members' contributions honestly** (e.g., a CSM's role in a migration) only if that's part of the customer's account, not invented color.\n- Otherwise, the standard `content-style` rules apply in full: sentence case headings, no em dashes, no hyperbole (\"revolutionary,\" \"seamless,\" \"game-changing\"), Oxford commas, active voice. Case study prose reads slightly more narrative/conversational than a guide, closer to an article, but it's still restrained — let the customer's own quotes carry the enthusiasm; the narrator's voice around them stays measured and factual.\n\n### Endmatter — case-study-specific meta tags (build-enforced)\n\nBeyond the standard article endmatter (`articleTitle`, `description`, `publishedOn`, `authorFullName`, `authorGitHubUsername`, `category`), the website's markdown build (`website/scripts/build-static-content.js`) requires additional tags for `category: case study` pages, and will fail the build if they're missing:\n\n- **`summaryChallenge`, `summarySolution`, `summaryKeyResults`** — required. These populate the sidebar \"Challenge / Solution / Key results\" summary box on the case study page (`website/views/pages/articles/case-study.ejs`). `summaryKeyResults` **must** be a semicolon-separated list (`\"Result one; Result two; Result three\"`) — a single sentence with no semicolon fails the build.\n- **`companyLogoFilename`** — if present, must reference a file that actually exists in `website/assets/images/`. The build checks this and errors if the file is missing.\n- **`quoteContent`** (the hero pull-quote at the top of the page) — if present, requires `quoteAuthorName`, `quoteAuthorJobTitle`, and `quoteAuthorImageFilename` alongside it, and the image file must exist in `website/assets/images/`.\n- **`companyName`, `companyInfo`** (and optional `companyInfoLineTwo`) — power the \"About [Company]\" sidebar/mobile block. Not build-enforced, but expected by the template; include them.\n\n**Image assets are a hard dependency, not something this skill can produce.** Before the build will succeed, someone needs to add the actual logo and headshot files to `website/assets/images/`, following the site's naming convention (`{descriptor}-{css-width}x{css-height}@2x.{ext}`, e.g. `fastly-logo-104x40@2x.png`, `dan-jackson-120x120@2x.png`). If those files don't exist yet, say so explicitly rather than writing `<meta>` tags that point at nothing — that's a silent build break waiting to happen.\n\nAn escape hatch exists (`<meta name=\"useBasicArticleTemplate\" value=\"true\">`) for a case study that should render with the plain article template instead of the sidebar layout; it then requires `cardTitleForCustomersPage` instead of the summary/quote/company tags. This is rare — only reach for it if the author specifically doesn't want the sidebar template.\n\n### Related, optional step: testimonials.yml\n\nMany (not all) published case studies also get their pull-quote added as an entry in `handbook/company/testimonials.yml`, which feeds the `<scrollable-tweets>` carousel used across the site (e.g., the `/customers` page). This is a nice-to-have, not build-enforced, and outside this skill's core job — mention it to the author as a follow-up rather than doing it unprompted, since it touches a shared file curated by the marketing team.\n\n## Workflow: writing a new case study\n\n1. Confirm you have real material to draw from — customer quotes (verbatim, attributed), and concrete numbers (device counts, migration timelines, cost figures). If working from raw interview notes or a call transcript, extract the quotes and facts before drafting; don't smooth a real quote into different words.\n2. Identify the three-act shape for this specific story: what was broken, why Fleet, what changed. Pick section headings that fit the story (see canonical examples) rather than reusing one example's headings verbatim.\n3. Draft the body: problem → decision → results, threading 2-4 `attribution-quote` divs at the moments they land, and a `checklist` div for evaluation criteria and/or headline results if the story has a natural short list.\n4. Write the title (sentence case, names the company and the outcome).\n5. Write the full endmatter block: standard article tags, then the case-study-specific summary/quote/company tags. Derive `summaryChallenge`/`summarySolution` as tight paraphrases of the body's first two acts; derive `summaryKeyResults` from the results section, semicolon-separated.\n6. Confirm image assets (`companyLogoFilename`, `quoteAuthorImageFilename`) exist in `website/assets/images/`, or flag that they still need to be added.\n7. Run the `content-style` skill over the prose for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: auditing or editing an existing case study\n\n1. Confirm it's tagged `category: case study`. If it's an `announcements` piece narrating a customer story (like the Deputy example), don't force this structure onto it — flag the mismatch instead.\n2. Read the whole piece and check the three-act shape is intact: problem, decision, results, each grounded in specifics rather than generic praise.\n3. Check every quote reads as something a person would actually say (specific, occasionally imperfect phrasing) rather than smoothed marketing copy — that's often a sign a quote was paraphrased rather than transcribed. Flag for the author to verify against the source if uncertain.\n4. Check the `attribution-quote` and `checklist` divs are syntactically correct (blank lines between quote/name/title, no stray markdown bullets inside `checklist`).\n5. Verify the endmatter has all case-study-required tags and that `summaryKeyResults` is semicolon-separated.\n6. Verify referenced image files (`companyLogoFilename`, `quoteAuthorImageFilename`) actually exist in `website/assets/images/`.\n7. Run the `content-style` skill over the prose.\n8. Run the self-check below, then summarize changes and flag anything you couldn't verify (a number, a quote, a missing image asset).\n\n## Self-check before finishing\n\n- Title is sentence case, names the company, and states the outcome rather than a feature.\n- Body follows the problem → choosing Fleet → results arc, with section headings suited to this story.\n- 2-4 `attribution-quote` divs, correctly formatted (italic quote, blank line, bold name, blank line, title/company), spaced through the narrative rather than clustered.\n- Every quote is verbatim and attributed to a real, named person; no invented quotes.\n- Every number (migration %, timeframe, cost, device count) traces back to the customer or Fleet team, not an inference.\n- A `checklist` div (or a plain bullet list) surfaces the headline results.\n- Endmatter includes `summaryChallenge`, `summarySolution`, `summaryKeyResults` (semicolon-separated), and the company/quote meta tags — or, if using `useBasicArticleTemplate`, `cardTitleForCustomersPage` instead.\n- `companyLogoFilename` and `quoteAuthorImageFilename` reference image files that exist in `website/assets/images/`, or the author has been told they still need to add them.\n- No \"osquery\" in prose (say \"Fleet's agent\" or \"fleetd\"); headings sentence case; no em dashes, filler, or hyperbole.\n- The `content-style` skill has been run over the prose.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/case-study-template.md`. A structural breakdown of each canonical example lives at `references/canonical-examples.md`.\n",".claude/skills/fix-sql-parser/SKILL.md":"---\nname: fix-sql-parser\ndescription: Fix the osquery SQL parser when it rejects a valid query (or accepts an invalid one). Use when a query is flagged as invalid in the query editor but runs fine in osquery, when asked to \"fix the SQL parser\", \"fix the grammar\", \"this query is valid but Fleet says syntax error\", or when a corpus knownFailure needs closing.\nallowed-tools: Bash(yarn *), Bash(npx *), Bash(sqlite3 *), Bash(make generate-osquery-sql-parser), Bash(node *), Bash(git diff*), Bash(git status*), Read, Edit, Grep, Glob\neffort: high\n---\n\n# Fix an osquery SQL parser bug\n\nQuery to fix: $ARGUMENTS\n\nThe parser lives in `frontend/utilities/osquery_sql_parser/`. Read that\ndirectory's `README.md` first — it is the source of truth for this workflow and\nfor what the grammar deliberately excludes. This skill is the executable\nversion of its \"Making a change\" section.\n\n## First: is it actually a bug?\n\nDo not skip this. Three things are rejected **on purpose**, and \"fixing\" them\nwould undo deliberate decisions:\n\n1. **Non-SELECT statements.** osquery is read-only. `INSERT`, `UPDATE`,\n   `DELETE`, `CREATE`, `DROP`, `ALTER`, `ATTACH`, `PRAGMA`, `EXPLAIN`,\n   `BEGIN` are parse errors by design. Never re-add statement types to\n   `crud_stmt`.\n2. **Bind parameters** (`?`, `:name`, `@name`, `$name`). Valid SQLite, but\n   nothing in Fleet supplies bindings, so an unbound parameter silently matches\n   nothing. Rejecting them is intentional.\n3. **MySQL/Postgres dialect** osquery has no equivalent for: `FOR UPDATE`,\n   `INTERVAL`, `@@variables`, `RLIKE`, `FROM DUAL`, `#` comments, `@>` and\n   other jsonb operators, `COLLATE =`. See the README's Provenance section for\n   the full list.\n\nThen confirm the query is valid for the engine, using real SQLite:\n\n```bash\nsqlite3 :memory: \"<the query>\"\n```\n\nA syntax error here means **the query is wrong, not the grammar** — say so and\nstop. (Errors about missing tables are expected and fine; osquery's tables\ndon't exist in a bare sqlite3. Only syntax errors matter.)\n\nIf the query is valid SQLite and isn't in one of the three excluded categories,\nit is a real bug. Continue.\n\n## 1. Reproduce against the grammar\n\n```bash\nyarn --silent peggy -t \"<the query>\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs\n```\n\nThe `SyntaxError` it prints carries a `location` (line/column) and an\n`expected` list. Together these tell you which rule gave up and what it wanted\n— that is the rule to widen. Note the column and read the SQL at that offset;\nthe failure is usually one token past the construct the grammar can't handle.\n\n## 2. Add the failing case to `corpus.json` and watch it fail\n\n`frontend/utilities/osquery_sql_parser/corpus.json` is hand-maintained. Add:\n\n```json\n{\"name\": \"short description of the construct\", \"query\": \"<the query>\"}\n```\n\nNo `expect` field means \"must parse\". If you are instead fixing the opposite\nproblem — the parser accepts something it shouldn't — add\n`\"expect\": \"reject\"` and a `note` saying why.\n\n**If the query is already in the corpus as a `knownFailure`, delete its\n`knownFailure` and `expect` fields now, before touching the grammar.** Left\nalone, that entry asserts the gap still exists, so it passes until your fix\nlands and then fails — backwards. Removing the fields is what makes it red.\n\nNow run the tests and **confirm they fail, naming your entry**:\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser\n```\n\nYou should see `✕ parses every query expected to parse` with your entry's name\nin the reported array. A red test for the right reason before any grammar edit\nis what proves the fix actually did something. If it passes here, either the\nquery already parses or the entry is wrong — investigate before continuing.\n\n## 3. Edit the grammar\n\nEdit only `osquery_sql.pegjs`. **Never** edit\n`osquery_sql_parser.generated.js`; it is gitignored and rebuilt from the\ngrammar.\n\nRules read like BNF: `rule = alt1 / alt2 { action }`. Notes:\n\n- `'FOO'i` matches case-insensitively\n- `__` is optional whitespace/comments\n- alternation order matters — longest match first\n- action blocks build the AST, so the grammar doubles as AST documentation\n\nPrefer the smallest widening that fixes the case: add an alternative to the\nrule that failed, rather than restructuring. If your change alters the shape of\nan AST node, check whether `frontend/utilities/sql_tools.ts`'s visitor needs to\nlearn it — that file walks the AST to extract table names.\n\n## 4. Test\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser frontend/utilities/sql_tools.tests.ts frontend/components/forms/validators/validate_query\n```\n\n`yarn test` regenerates the parser first via the `pretest` hook, always through\nthe lockfile-pinned peggy. Invoking jest directly does not — if you do, run\n`make generate-osquery-sql-parser` first or you test a stale parser.\n\nYour new entry should now pass.\n\n## 5. Check you did not widen too far\n\nThis is the step that catches real mistakes. A loosened rule can start\naccepting dialect syntax the grammar deliberately rejects, and the corpus is\nthe guard: it holds ~57 `expect: \"reject\"` entries covering exactly that.\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser   # corpus: parse + reject + gaps\nnpx tsc --noEmit -p tsconfig.json\nyarn lint\n```\n\nThen spot-check the exclusions by hand — each of these must still be rejected:\n\n```bash\nfor q in \"INSERT INTO users (name) VALUES ('x')\" \"SELECT @@version\" \\\n         \"SELECT * FROM users FOR UPDATE\" \"SELECT 1 FROM users WHERE uid = ?\"; do\n  printf '%-45s ' \"$q\"\n  yarn --silent peggy -t \"$q\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs \\\n    >/dev/null 2>&1 && echo \"ACCEPTED - BUG, you widened too far\" || echo \"rejected (correct)\"\ndone\n```\n\nFinally, run the whole frontend suite, since `sql_tools` and the query\nvalidator feed several pages:\n\n```bash\nyarn test\n```\n\n## 6. Report\n\nTell the user:\n\n- the rule you changed and why that was the right one\n- the corpus entry you added\n- confirmation that the reject cases and full suite still pass\n\nCommit the grammar and `corpus.json` together. The generated parser is\ngitignored, so there is nothing else to commit. Do not add issue or PR numbers\nto comments in either file.\n\n## Rules\n\n- Verify against real `sqlite3` before changing the grammar. If SQLite rejects\n  the query, the query is the bug.\n- Red test first, always: corpus entry before grammar edit.\n- Only `osquery_sql.pegjs` is edited. The generated parser is never edited or\n  committed.\n- `crud_stmt` stays SELECT-only.\n- Do not delete or restructure unrelated rules while you are in there.\n- If the fix would require re-admitting a deliberate exclusion, stop and ask\n  rather than deciding for the user.\n",".claude/skills/find-related-tests/SKILL.md":"---\nname: find-related-tests\ndescription: Find test files and functions related to recent git changes. Suggests exact go test commands with correct env vars.\nallowed-tools: Bash(git *), Read, Grep, Glob\neffort: low\n---\n\nLook at my recent git changes (`git diff` and `git diff --cached`) and find all related test files.\n\nFor each modified file, find:\n1. The `_test.go` file in the same package\n2. Integration tests that exercise the modified code (check `server/service/integration_*_test.go` files)\n3. Any test helpers or fixtures that may need updating\n\nList the test files and suggest specific test functions to run with the exact `go test` commands, including the right env vars (MYSQL_TEST, REDIS_TEST, etc.).\n",".claude/skills/fleet-article-formatting/SKILL.md":"---\nname: fleet-article-formatting\ndescription: Apply Fleet's house article format and article-specific voice to Fleet ARTICLES — blog pieces with meta category \"articles\" or \"comparison\" (thought-leadership, how-to, and comparison pieces). Use when writing a NEW article or editing, refreshing, or tightening an EXISTING one, even if the user doesn't say \"use the format.\" Governs structure and article-specific voice; pair with content-style for word-level voice. Do NOT use for guides, case studies, or announcements — those are separate content types with their own skills.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet article formatting\n\nThis skill governs article **structure and article-specific voice** — the section order, the key-takeaways pattern, the CTAs, and the honest-claims guardrails — for drafting new articles and bringing older ones up to standard. For word-level voice (sentence case, em dashes, filler, Fleet terminology, positioning), run the `content-style` skill over the prose. Apply both together on every article.\n\nThe format does one job: let a busy reader get the whole argument from the top of the page, then keep reading for the proof. \"Key takeaways\" and the CTA button sit immediately after the dek — before the intro — so a reader who scrolls no further still leaves with the argument and a next step. Every rule below serves that.\n\n## Content types\n\nFleet publishes several content types under `articles/`. This skill governs the **article** format only. Identify the type first (the `<meta name=\"category\" ...>` value is the routing signal), then apply the matching format. The canonical list of valid `category` values lives in [`website/scripts/build-static-content.js`](../../../website/scripts/build-static-content.js) (`validArticleCategories`); a fuller per-type explainer is in [`content-style/references/content-types.md`](../content-style/references/content-types.md).\n\n| Content type | What it is | `category` value(s) | Format governed by |\n|---|---|---|---|\n| **Article** | Thought-leadership, how-to, and comparison pieces in the house format (title → dek → key takeaways → CTA → body → closing) | `articles`, `comparison` | **this skill** (+ `content-style` for prose) |\n| **Guide** | Step-by-step operational how-to | `guides` | `fleet-guide-formatting` |\n| **Case study** | Customer story; requires summary/quote meta tags | `case study` | `fleet-case-study-formatting` |\n| **Announcement** | Product/news announcement | `announcements` | `content-style` |\n| Release notes, podcasts, webinars, whitepapers, reports | Other content types | `releases`, `podcasts`, `webinar`, `whitepaper`, `report`, … | out of scope here |\n\n**Scope follows from this table:** apply this skill when the piece is an **Article** — `category` is `articles` *or* `comparison`. Both use the same format; `comparison` differs only in routing (it sets `category=comparison` and carries extra routing meta tags — see the website build requirements). For any other type, stop and use the owning skill; flag the mismatch to the author rather than reshaping their piece.\n\n## The structure\n\nUse this skeleton for Fleet articles — thought-leadership posts, how-to articles, and comparison pieces. Not every article needs every section, but the order is fixed.\n\n```\n# Title (sentence case)\n*Italic dek — one or two sentences.*\n\n## Key takeaways\n- **Bold lead-in.** One to three sentences, outcome-first. (5–6 bullets.)\n\n<a purpose=\"cta-button\" href=\"https://fleetdm.com/relevant-page\">Short action label</a>\n\n[Intro — keep it short (about two short paragraphs); it opens the body proper.]\n\n## [Body section]\n### [Subsection]\n...\n\n## [Closing section]\n[Short recap or stakes, then the through-line.]\n\n## See it live\n[Optional next-steps block: a guide link plus one or two demo/workshop bullets.]\n```\n\n### Title\n\nSentence case, not Title Case. Lead with the reader's outcome or the tension, not the product name. \"How Fleet completes your Microsoft stack\" reads better than \"Fleet: The Complete Microsoft Integration Platform.\"\n\n### Dek (the italic line under the title)\n\nOne or two sentences, italicized. It frames the question the piece answers or the payoff the reader gets — it does not summarize the whole article. Think of it as the reason to keep reading. If the piece has a meta description, the dek can be a sharper, more human version of it.\n\n### Key takeaways — the heart of the format\n\n- Place it immediately after the dek, before the intro and the first body section. Nothing but the title and dek comes before it — the reader gets the whole argument at the very top of the page.\n- 5–6 bullets. Each bullet: `**Bold lead-in phrase.**` followed by one to three sentences.\n- **Lead with the business outcome, not the feature.** The bold phrase should state what's true for the reader or what they get (\"Fleet sees it across every OS, in real time\"), and the sentences explain why it matters. Avoid bullets that just name a feature.\n- **Each takeaway previews a body section** — there should be a rough one-to-one mapping. If a takeaway has no home in the body, either cut it or add the section.\n- **Preview, don't echo.** Do not copy a full sentence verbatim from the body into a takeaway. Say the same idea in different words. If the reader sees the identical sentence twice within a few hundred words, the takeaway reads as padding.\n- **Takeaways must stand alone.** Because they now precede the intro, they can't lean on any setup — each bullet has to make sense to a reader who has read only the title and dek.\n\n**Example of a strong takeaway (outcome-first, previews a section):**\n> **Governance is code, not console clicks.** Reports and policies live in Git as YAML, get reviewed in a pull request, and deploy through CI, so your AI governance posture is auditable and reversible instead of a click someone made six months ago.\n\n**Weaker version (feature-first, no stakes):**\n> **GitOps support.** Fleet supports managing policies and reports as YAML in Git with CI/CD.\n\n### CTA button after the key takeaways\n\nPlace a single call-to-action button directly after the key takeaways list, before the intro.\n\n- **Syntax:** `<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">Short action label</a>` — an established pattern that renders as Fleet's primary (green) button in the article body. Use a full `https://fleetdm.com/…` URL, as existing articles do.\n- **Make it relevant to the piece.** Match label and destination to the argument: \"See config-as-code in Fleet\" → `/infrastructure-as-code` for a config-as-code post, \"Compare features\" → `/pricing` for a comparison, \"Get a demo\" → `/contact` as the default.\n- **One button only.** The fuller menu of next steps belongs in the closing CTA, not here. If the closing block also offers \"Get a demo,\" vary the top button so the two CTAs aren't identical.\n\n### Intro\n\nThe intro comes **after** the CTA button and opens the body proper. Keep it short — aim for about two short paragraphs. It can be narrative (\"I've spent the last few months talking with teams…\") or direct (\"Your organization runs on Microsoft.\"), but it should end on a bridge that hands the reader into the first body section — a question, a stakes statement, or a \"here's where the answer lives\" line.\n\nBecause the takeaways have already summarized the argument, the intro doesn't need to — its job is to set up the problem and pull the still-reading reader into the body. If it runs past two paragraphs, fold the setup together and cut. Don't restate the takeaways in prose; that reads as padding coming right after them.\n\n### Body\n\n`##` for sections, `###` for subsections, all sentence case. Lead each section with its point, then support it. Use concrete, grounded specifics (real version numbers, real table names, real CVE-feed names) wherever you have them — specificity is what separates Fleet content from generic vendor copy.\n\nFor **integration or comparison pieces**, the cooperative \"Fleet + X\" section framing works well (e.g. \"Fleet + Microsoft Intune,\" \"Fleet + your SIEM\"): name the other tool, give it genuine credit for what it does well, then show precisely where Fleet adds depth. This reads as confident rather than defensive. (Thought-leadership and how-to pieces don't need this framing — use plain topic headers.)\n\n### Closing\n\nA short section that restates the stakes (\"The risk of waiting is real\") and lands the through-line. Do **not** re-list every key takeaway here — that's the most common bloat. One or two synthesizing sentences, then the closing line.\n\n### CTA\n\nFleet pieces typically carry two calls to action, and they play different roles:\n\n- **The post-takeaways button** (above) — one button, high on the page, for the reader who's already convinced.\n- **The closing CTA** — at the foot of the article, a fuller menu of next steps. This is a short \"See it live\" block (a guide link plus one or two bullets such as **Get a demo** → `/contact` and **Join a GitOps training session** → `/gitops-workshop`). Keep it to the actions that genuinely fit the piece; real links only. Don't add a horizontal rule or a trailing italic CTA line after it — the website renders its own divider below the article.\n\n### Endmatter\n\nEvery article ends with the `<meta>` block from [`content-style/references/content-types.md`](../content-style/references/content-types.md). Emit it as part of the draft; `assets/article-template.md` already carries it. Two fields need care:\n\n- `articleTitle` matches the H1 exactly, character for character.\n- **`description` must be 150 characters or fewer.** This is enforced by the website build, not a style preference: `website/scripts/build-static-content.js` throws `An article page has an invalid description meta tag` and fails the whole production build for any article over the limit. It applies to every content type that uses this endmatter, articles and comparisons included. Count the characters rather than eyeballing it, since a description that reads like one or two sentences lands near 150 more often than you'd expect. Trim words, don't drop the substance.\n\nNever fabricate `authorFullName`, `authorGitHubUsername`, or `publishedOn`. If you don't have them, leave the placeholders and tell the author which fields to fill in.\n\n## Voice and terminology\n\nFleet's voice is confident, specific, and honest. It respects the reader's intelligence and never oversells.\n\n### Terminology rules\n\n- **Say \"Fleet's agent\" or \"fleetd,\" not \"osquery,\"** in marketing and customer-facing content. \"Queryable,\" \"query,\" and \"live query\" are fine as descriptors; in product-facing CTAs Fleet often prefers \"report.\" Don't expose raw upstream project names where \"Fleet's agent\" reads cleaner.\n- **Sentence case** for all headings and for credential/product names (\"Certified Fleet expert,\" not \"Certified Fleet Expert\").\n- Name competitors and other tools plainly and fairly — no scare quotes, no snark. The argument should win on substance.\n\n### Honest-claims guardrails\n\nFleet content earns trust by being accurate. This is non-negotiable and applies whether drafting or editing.\n\n- **Never invent an integration, capability, or parity claim.** If you're not certain Fleet does something, don't assert it. Verify against Fleet's docs (fleetdm.com), the changelog, or ask the author.\n- **Hedge where the truth is partial.** Prefer \"tends to wave it through\" over \"is completely blind to\"; prefer \"you can pipe Fleet data into Sentinel via your existing pipeline\" over implying a turnkey native connector that may not exist. Accurate-but-modest beats impressive-but-wrong every time.\n- **Ground specifics.** Tie capability claims to real versions/features when you can (\"landed for macOS in Fleet 4.70.0, extended to Windows in 4.84.0\"). Flag any claim you couldn't verify so a human can check it before publishing.\n- Cross-platform coverage (macOS, Windows, Linux, and beyond) is usually Fleet's strongest differentiator — surface it, but only where it's genuinely relevant to the point.\n\n### Formatting restraint\n\nDefault to prose. Use bullets and tables only where a list genuinely earns its place — enumerations (e.g. a fixed checklist you're contrasting against), step sequences, code, or scannable reference. Don't bullet a narrative. Don't bold half the sentence. The key takeaways are the one section that's intentionally list-heavy; the body should breathe.\n\n### De-duplication\n\nEach distinct point gets one primary home. A claim that appears five times across a piece loses force and bloats length. The takeaways preview the body, but beyond that, if you find the same idea stated in two sections, keep it in the stronger one and cut or cross-reference the other. When a point legitimately belongs in two places (takeaway + body), vary the wording so it reads as deliberate, not duplicated.\n\n## Workflow: writing a new piece\n\n1. Confirm the piece is an **article** (not a case study, announcement, or guide) and pin down the article type (thought-leadership, how-to, or comparison) and the single main argument.\n2. Draft the body sections first — that's where the substance is. Ground every claim; flag anything unverified.\n3. Write the dek and the intro. Keep the intro to about two short paragraphs; it opens the body, so end it on a bridge into the first section.\n4. Derive the **key takeaways** from the finished body: one outcome-first bullet per major section, 5–6 total, previewing without echoing. Place them immediately after the dek, before the intro — each bullet must stand alone with no setup.\n5. Add the **post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label and destination relevant to the piece.\n6. Write the closing and the closing CTA.\n7. Run the `content-style` skill over the whole draft for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: updating and enhancing existing content\n\nUse this to bring older Fleet content up to the current format. Work through it in order.\n\n1. **Confirm it's an article.** Check the `<meta name=\"category\" ...>` value against the Content types table. If it's `articles` or `comparison`, proceed. Otherwise stop — this format doesn't apply; tell the author rather than reshaping their piece.\n2. **Read the whole piece** and identify its main argument and its natural section breaks.\n3. **Add a dek** if there isn't one — an italic one-or-two-sentence framing under the title.\n4. **Insert a \"Key takeaways\" section** immediately after the dek, before the intro. Derive 5–6 outcome-first bullets, roughly one per major section. Make them preview the body without copying sentences out of it, and make sure each stands alone — the reader hasn't seen the intro yet.\n5. **Add the post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label/destination relevant to the piece.\n6. **Tighten the intro** to about two short paragraphs. It now follows the CTA button and opens the body, so it should set up the problem and bridge into the first section — not restate the takeaways.\n7. **Sweep terminology**: replace \"osquery\" with \"Fleet's agent\"/\"fleetd\" in prose, fix Title Case headings to sentence case, fix capitalized credential/product names.\n8. **De-duplicate**: find claims repeated across sections and keep each in its strongest single home.\n9. **Verify claims**: check every capability/integration/parity statement against Fleet's docs or the changelog. Soften or correct anything unsupported; flag anything you can't confirm for the author.\n10. **Trim over-formatting**: convert bullet-soup back to prose where a list isn't earning its place; reduce stray bolding.\n11. **Preserve structural metadata** (meta tags, author fields, frontmatter, existing links) exactly — don't drop them in the rewrite.\n12. **Run the `content-style` skill** over the revised prose — it owns the voice, sentence case, em-dash, filler, and terminology rules referenced in the steps above; let it be the final word on word-level style.\n13. Run the self-check below, then summarize the changes you made and list any claims you flagged for human verification.\n\n## Self-check before finishing\n\n- Title is sentence case and outcome-led; there's an italic dek that frames rather than summarizes.\n- \"Key takeaways\" sits immediately after the dek, before the intro: 5–6 outcome-first bullets, each previewing a section, each standing alone, none echoing a body sentence verbatim.\n- A single CTA button follows the key takeaways and precedes the intro, with a label and destination relevant to the piece.\n- The intro is short (about two short paragraphs), doesn't restate the takeaways, and ends on a bridge into the first body section.\n- Body sections lead with their point and use grounded specifics; comparison pieces credit the other tool before adding depth.\n- No \"osquery\" in customer-facing prose; headings and credential names are sentence case.\n- Every capability claim is true and grounded; partial truths are hedged; unverified claims are flagged.\n- No idea is repeated across sections without a reason; formatting is restrained outside the takeaways.\n- Closing lands the through-line without re-listing the takeaways; the top button and closing CTA aren't identical, and all links are real.\n- Endmatter is present, `articleTitle` matches the H1 exactly, and `description` is 150 characters or fewer (counted, not estimated). Author and date are real or flagged, never invented.\n- The `content-style` skill has been run over the prose, and its voice, grammar, and terminology guidance is satisfied.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/article-template.md`. Start new articles from it when helpful.\n",".claude/skills/fleet-gitops/SKILL.md":"# fleet-gitops\n\nPath: `.claude/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/SKILL.md)",".claude/skills/fleet-guide-formatting/SKILL.md":"# fleet-guide-formatting\n\nPath: `.claude/skills/fleet-guide-formatting/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/SKILL.md)",".claude/skills/handbook-pr/SKILL.md":"# handbook-pr\n\nPath: `.claude/skills/handbook-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/SKILL.md)",".claude/skills/lint/SKILL.md":"# lint\n\nPath: `.claude/skills/lint/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/lint/SKILL.md)",".claude/skills/new-endpoint/SKILL.md":"# new-endpoint\n\nPath: `.claude/skills/new-endpoint/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-endpoint/SKILL.md)",".claude/skills/new-fma/SKILL.md":"# new-fma\n\nPath: `.claude/skills/new-fma/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/SKILL.md)",".claude/skills/new-migration/SKILL.md":"# new-migration\n\nPath: `.claude/skills/new-migration/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-migration/SKILL.md)",".claude/skills/openspec-apply-change/SKILL.md":"# openspec-apply-change\n\nPath: `.claude/skills/openspec-apply-change/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-apply-change/SKILL.md)",".claude/skills/openspec-archive-change/SKILL.md":"# openspec-archive-change\n\nPath: `.claude/skills/openspec-archive-change/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-archive-change/SKILL.md)",".claude/skills/openspec-explore/SKILL.md":"# openspec-explore\n\nPath: `.claude/skills/openspec-explore/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-explore/SKILL.md)",".claude/skills/openspec-propose/SKILL.md":"# openspec-propose\n\nPath: `.claude/skills/openspec-propose/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-propose/SKILL.md)",".claude/skills/project/SKILL.md":"# project\n\nPath: `.claude/skills/project/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/project/SKILL.md)",".claude/skills/push-reference-docs/SKILL.md":"# push-reference-docs\n\nPath: `.claude/skills/push-reference-docs/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/push-reference-docs/SKILL.md)",".claude/skills/release-retro/SKILL.md":"# release-retro\n\nPath: `.claude/skills/release-retro/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/release-retro/SKILL.md)",".claude/skills/review-pr/SKILL.md":"# review-pr\n\nPath: `.claude/skills/review-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/review-pr/SKILL.md)",".claude/skills/spec-story/SKILL.md":"# spec-story\n\nPath: `.claude/skills/spec-story/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/SKILL.md)",".claude/skills/test/SKILL.md":"# test\n\nPath: `.claude/skills/test/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/test/SKILL.md)",".claude/skills/tier-modes/SKILL.md":"# tier-modes\n\nPath: `.claude/skills/tier-modes/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/tier-modes/SKILL.md)",".claude/skills/vuln-triage/SKILL.md":"# vuln-triage\n\nPath: `.claude/skills/vuln-triage/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/vuln-triage/SKILL.md)",".claude/skills/who-blocks-this-pr/SKILL.md":"# who-blocks-this-pr\n\nPath: `.claude/skills/who-blocks-this-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/who-blocks-this-pr/SKILL.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md":"# fleet-gitops\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md)","cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md":"# fleet-gitops\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md)","AGENTS.md":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/AGENTS.md)",".claude/CLAUDE.md":"# .claude - Claude Agent Guidelines & System Prompt\n\nPath: `.claude/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/CLAUDE.md)","tools/README.md":"# tools Documentation\n\nPath: `tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/README.md)",".claude/agents/fleet-security-auditor.md":"# Subagent: fleet-security-auditor\n\nPath: `.claude/agents/fleet-security-auditor.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/fleet-security-auditor.md)",".claude/agents/frontend-reviewer.md":"# Subagent: frontend-reviewer\n\nPath: `.claude/agents/frontend-reviewer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/frontend-reviewer.md)",".claude/agents/go-reviewer.md":"# Subagent: go-reviewer\n\nPath: `.claude/agents/go-reviewer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/go-reviewer.md)",".claude/rules/fleet-api.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-api.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-api.md)",".claude/rules/fleet-database.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-database.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-database.md)",".claude/rules/fleet-frontend.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-frontend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-frontend.md)",".claude/rules/fleet-go-backend.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-go-backend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-go-backend.md)",".claude/rules/fleet-orbit.md":"# Rules Skill\n\nPath: `.claude/rules/fleet-orbit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-orbit.md)","tools/api/README.md":"# api Documentation\n\nPath: `tools/api/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/api/README.md)","tools/apm-elastic/README.md":"# apm-elastic Documentation\n\nPath: `tools/apm-elastic/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/apm-elastic/README.md)","tools/backup_db/README.md":"# backup_db Documentation\n\nPath: `tools/backup_db/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/backup_db/README.md)","tools/calendar/README.md":"# calendar Documentation\n\nPath: `tools/calendar/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/calendar/README.md)","tools/charts-backfill/README.md":"# charts-backfill Documentation\n\nPath: `tools/charts-backfill/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-backfill/README.md)","tools/charts-collect/README.md":"# charts-collect Documentation\n\nPath: `tools/charts-collect/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-collect/README.md)","tools/custom-package-parser/README.md":"# custom-package-parser Documentation\n\nPath: `tools/custom-package-parser/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/README.md)","tools/custom-package-parser/tests.md":"# Custom-package-parser Skill\n\nPath: `tools/custom-package-parser/tests.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/tests.md)","tools/desktop-rate-limit/README.md":"# desktop-rate-limit Documentation\n\nPath: `tools/desktop-rate-limit/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/desktop-rate-limit/README.md)","tools/dibble/README.md":"# dibble Documentation\n\nPath: `tools/dibble/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/dibble/README.md)","tools/file-server/README.md":"# file-server Documentation\n\nPath: `tools/file-server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/file-server/README.md)","tools/fleet-slackbot/README.md":"# fleet-slackbot Documentation\n\nPath: `tools/fleet-slackbot/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/README.md)","tools/fleet-slackbot/package.json":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/package.json)","tools/fleet-slackbot/render.yaml":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/render.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/render.yaml)","tools/fleet-slackbot/slack-manifest.json":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/slack-manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/slack-manifest.json)","tools/fleetctl-docker/README.md":"# fleetctl-docker Documentation\n\nPath: `tools/fleetctl-docker/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-docker/README.md)","tools/fleetctl-npm/README.md":"# fleetctl-npm Documentation\n\nPath: `tools/fleetctl-npm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/README.md)","tools/fleetctl-npm/package.json":"# Fleetctl-npm Skill\n\nPath: `tools/fleetctl-npm/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/package.json)","tools/fleetd-linux/README.md":"# fleetd-linux Documentation\n\nPath: `tools/fleetd-linux/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetd-linux/README.md)","tools/github-manage/README.md":"# github-manage Documentation\n\nPath: `tools/github-manage/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/README.md)","tools/gitops-auto-complete/README.md":"# gitops-auto-complete Documentation\n\nPath: `tools/gitops-auto-complete/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/README.md)","tools/gitops-auto-complete/generated-schema.json":"# Gitops-auto-complete Skill\n\nPath: `tools/gitops-auto-complete/generated-schema.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/generated-schema.json)","tools/hangar/README.md":"# hangar Documentation\n\nPath: `tools/hangar/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/README.md)","tools/kubequery/README.md":"# kubequery Documentation\n\nPath: `tools/kubequery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/kubequery/README.md)","tools/migration-cleanup/CHANGELOG.md":"# Migration-cleanup Skill\n\nPath: `tools/migration-cleanup/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/CHANGELOG.md)","tools/migration-cleanup/README.md":"# migration-cleanup Documentation\n\nPath: `tools/migration-cleanup/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/README.md)","tools/msal/README.md":"# msal Documentation\n\nPath: `tools/msal/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/msal/README.md)","tools/mysql-replica-testing/README.md":"# mysql-replica-testing Documentation\n\nPath: `tools/mysql-replica-testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-replica-testing/README.md)","tools/oncall/README.md":"# oncall Documentation\n\nPath: `tools/oncall/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/oncall/README.md)","tools/osquery-agent-options/README.md":"# osquery-agent-options Documentation\n\nPath: `tools/osquery-agent-options/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-agent-options/README.md)","tools/osquery-testing/README.md":"# osquery-testing Documentation\n\nPath: `tools/osquery-testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-testing/README.md)","tools/osquery/README.md":"# osquery Documentation\n\nPath: `tools/osquery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/README.md)","tools/qacheck/README.md":"# qacheck Documentation\n\nPath: `tools/qacheck/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/qacheck/README.md)","tools/redis-stress/README.md":"# redis-stress Documentation\n\nPath: `tools/redis-stress/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-stress/README.md)","tools/release/README.md":"# release Documentation\n\nPath: `tools/release/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/README.md)","tools/saml/README.md":"# saml Documentation\n\nPath: `tools/saml/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/saml/README.md)","tools/screencap/README.md":"# screencap Documentation\n\nPath: `tools/screencap/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/README.md)","tools/sentry-self-hosted/README.md":"# sentry-self-hosted Documentation\n\nPath: `tools/sentry-self-hosted/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/sentry-self-hosted/README.md)","tools/signoz/README.md":"# signoz Documentation\n\nPath: `tools/signoz/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/README.md)","tools/signoz/database_custom_dashboard.json":"# Signoz Skill\n\nPath: `tools/signoz/database_custom_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/database_custom_dashboard.json)","tools/signoz/host_cache_dashboard.json":"# Signoz Skill\n\nPath: `tools/signoz/host_cache_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/host_cache_dashboard.json)","tools/signoz/http_errors_dashboard.json":"# Signoz Skill\n\nPath: `tools/signoz/http_errors_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/http_errors_dashboard.json)","tools/team-builder/README.md":"# team-builder Documentation\n\nPath: `tools/team-builder/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/team-builder/README.md)","tools/telemetry/README.md":"# telemetry Documentation\n\nPath: `tools/telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/README.md)","tools/telemetry/otel-collector-config.yaml":"# Telemetry Skill\n\nPath: `tools/telemetry/otel-collector-config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/otel-collector-config.yaml)","tools/terraform/README.md":"# terraform Documentation\n\nPath: `tools/terraform/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/README.md)","tools/terraform/generator.yaml":"# Terraform Skill\n\nPath: `tools/terraform/generator.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/generator.yaml)","tools/terraform/openapi.json":"# Terraform Skill\n\nPath: `tools/terraform/openapi.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/openapi.json)","tools/test-certs/README.md":"# test-certs Documentation\n\nPath: `tools/test-certs/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-certs/README.md)","tools/test-orbit-mtls/README.md":"# test-orbit-mtls Documentation\n\nPath: `tools/test-orbit-mtls/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-orbit-mtls/README.md)","tools/tuf/README.md":"# tuf Documentation\n\nPath: `tools/tuf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/README.md)","tools/upgrade/README.md":"# upgrade Documentation\n\nPath: `tools/upgrade/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/upgrade/README.md)","tools/webhook/README.md":"# webhook Documentation\n\nPath: `tools/webhook/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/webhook/README.md)",".claude/commands/opsx/apply.md":"# Command: /apply\n\nPath: `.claude/commands/opsx/apply.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/apply.md)",".claude/commands/opsx/archive.md":"# Command: /archive\n\nPath: `.claude/commands/opsx/archive.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/archive.md)",".claude/commands/opsx/explore.md":"# Command: /explore\n\nPath: `.claude/commands/opsx/explore.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/explore.md)",".claude/commands/opsx/propose.md":"# Command: /propose\n\nPath: `.claude/commands/opsx/propose.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/propose.md)",".claude/skills/spec-story/README.md":"# Spec-story Skill\n\nPath: `.claude/skills/spec-story/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/README.md)","ee/tools/license/README.md":"# license Documentation\n\nPath: `ee/tools/license/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/README.md)","ee/tools/license/package.json":"# License Skill\n\nPath: `ee/tools/license/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/package.json)","ee/tools/mdm/README.md":"# mdm Documentation\n\nPath: `ee/tools/mdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/mdm/README.md)","orbit/tools/windows/profiling_process.md":"# Windows Skill\n\nPath: `orbit/tools/windows/profiling_process.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/tools/windows/profiling_process.md)","tools/android/cert-auth-server/README.md":"# cert-auth-server Documentation\n\nPath: `tools/android/cert-auth-server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/android/cert-auth-server/README.md)","tools/ci/helm-values/custom-annotations.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/custom-annotations.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/custom-annotations.yaml)","tools/ci/helm-values/disable-fleet-tls.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/disable-fleet-tls.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/disable-fleet-tls.yaml)","tools/ci/helm-values/enable-cloudsql-proxy.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/enable-cloudsql-proxy.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-cloudsql-proxy.yaml)","tools/ci/helm-values/enable-mysql-tls.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/enable-mysql-tls.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-mysql-tls.yaml)","tools/ci/helm-values/environments-scalar-values.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/environments-scalar-values.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/environments-scalar-values.yaml)","tools/ci/helm-values/logger-firehose-accesssid.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-firehose-accesssid.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-accesssid.yaml)","tools/ci/helm-values/logger-firehose-sts.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-firehose-sts.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-sts.yaml)","tools/ci/helm-values/logger-pubsub.yaml":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-pubsub.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-pubsub.yaml)","tools/hangar/frontend/package.json":"# Frontend Skill\n\nPath: `tools/hangar/frontend/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/package.json)","tools/hangar/frontend/tsconfig.json":"# Frontend Skill\n\nPath: `tools/hangar/frontend/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/tsconfig.json)","tools/loadtest/fleetd_labels/README.md":"# fleetd_labels Documentation\n\nPath: `tools/loadtest/fleetd_labels/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/fleetd_labels/README.md)","tools/loadtest/metrics/README.md":"# metrics Documentation\n\nPath: `tools/loadtest/metrics/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/README.md)","tools/loadtest/osquery/README.md":"# osquery Documentation\n\nPath: `tools/loadtest/osquery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/osquery/README.md)","tools/loadtest/scripts_and_profiles/README.md":"# scripts_and_profiles Documentation\n\nPath: `tools/loadtest/scripts_and_profiles/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/scripts_and_profiles/README.md)","tools/loadtest/unified_queue/README.md":"# unified_queue Documentation\n\nPath: `tools/loadtest/unified_queue/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/unified_queue/README.md)","tools/mdm/apple/glossary-and-protocols.md":"# Apple Skill\n\nPath: `tools/mdm/apple/glossary-and-protocols.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/glossary-and-protocols.md)","tools/mdm/apple/toggle-mdm-dev.md":"# Apple Skill\n\nPath: `tools/mdm/apple/toggle-mdm-dev.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/toggle-mdm-dev.md)","tools/mdm/apple/troubleshooting.md":"# Apple Skill\n\nPath: `tools/mdm/apple/troubleshooting.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/troubleshooting.md)","tools/mdm/assets/README.md":"# assets Documentation\n\nPath: `tools/mdm/assets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/assets/README.md)","tools/mysql-tests/rds/README.md":"# rds Documentation\n\nPath: `tools/mysql-tests/rds/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/README.md)","tools/mysql-tests/rds/cf-template.yaml":"# Rds Skill\n\nPath: `tools/mysql-tests/rds/cf-template.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/cf-template.yaml)","tools/nvd/nvdvuln/README.md":"# nvdvuln Documentation\n\nPath: `tools/nvd/nvdvuln/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/nvd/nvdvuln/README.md)","tools/osquery/in-a-box/README.md":"# in-a-box Documentation\n\nPath: `tools/osquery/in-a-box/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/in-a-box/README.md)","tools/percona/pmm/README.md":"# pmm Documentation\n\nPath: `tools/percona/pmm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/pmm/README.md)","tools/percona/test/README.md":"# test Documentation\n\nPath: `tools/percona/test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/test/README.md)","tools/redis-tests/elasticache/README.md":"# elasticache Documentation\n\nPath: `tools/redis-tests/elasticache/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/README.md)","tools/redis-tests/elasticache/cf-template.yaml":"# Elasticache Skill\n\nPath: `tools/redis-tests/elasticache/cf-template.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/cf-template.yaml)","tools/release/calendar-sync/README.md":"# calendar-sync Documentation\n\nPath: `tools/release/calendar-sync/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/calendar-sync/README.md)","tools/screencap/workflows/test.json":"# Workflows Skill\n\nPath: `tools/screencap/workflows/test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/workflows/test.json)","tools/seed_data/queries/README.md":"# queries Documentation\n\nPath: `tools/seed_data/queries/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/seed_data/queries/README.md)","tools/software/icons/README.md":"# icons Documentation\n\nPath: `tools/software/icons/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/icons/README.md)","tools/software/packages/README.md":"# packages Documentation\n\nPath: `tools/software/packages/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/packages/README.md)","tools/software/vulnerabilities/README.md":"# vulnerabilities Documentation\n\nPath: `tools/software/vulnerabilities/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/README.md)","tools/tuf/status/README.md":"# status Documentation\n\nPath: `tools/tuf/status/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/status/README.md)","tools/tuf/test/Fleetd-auto-update-test-guide.md":"# Test Skill\n\nPath: `tools/tuf/test/Fleetd-auto-update-test-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/Fleetd-auto-update-test-guide.md)","tools/tuf/test/README.md":"# test Documentation\n\nPath: `tools/tuf/test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/README.md)",".claude/skills/api-design-check/references/conventions.md":"# References Skill\n\nPath: `.claude/skills/api-design-check/references/conventions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/api-design-check/references/conventions.md)",".claude/skills/content-style/references/content-types.md":"# References Skill\n\nPath: `.claude/skills/content-style/references/content-types.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/content-types.md)",".claude/skills/content-style/references/positioning.md":"# References Skill\n\nPath: `.claude/skills/content-style/references/positioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/positioning.md)",".claude/skills/content-style/references/style-rules.md":"# References Skill\n\nPath: `.claude/skills/content-style/references/style-rules.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/style-rules.md)",".claude/skills/fleet-article-formatting/assets/article-template.md":"# Assets Skill\n\nPath: `.claude/skills/fleet-article-formatting/assets/article-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-article-formatting/assets/article-template.md)",".claude/skills/fleet-case-study-formatting/assets/case-study-template.md":"# Assets Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/assets/case-study-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/assets/case-study-template.md)",".claude/skills/fleet-case-study-formatting/references/canonical-examples.md":"# References Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/references/canonical-examples.md)",".claude/skills/fleet-gitops/references/profiles-android.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-android.md)",".claude/skills/fleet-gitops/references/profiles-apple.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-apple.md)",".claude/skills/fleet-gitops/references/profiles-windows.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-windows.md)",".claude/skills/fleet-gitops/references/queries.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/queries.md)",".claude/skills/fleet-gitops/references/software.md":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/software.md)",".claude/skills/fleet-gitops/scripts/validate.py":"# Claude Directive: validate.py\n\nPath: `.claude/skills/fleet-gitops/scripts/validate.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/scripts/validate.py)",".claude/skills/fleet-guide-formatting/references/canonical-examples.md":"# References Skill\n\nPath: `.claude/skills/fleet-guide-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/canonical-examples.md)",".claude/skills/fleet-guide-formatting/references/template.md":"# References Skill\n\nPath: `.claude/skills/fleet-guide-formatting/references/template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/template.md)",".claude/skills/handbook-pr/scripts/check-handbook-diff.sh":"# Claude Directive: check-handbook-diff.sh\n\nPath: `.claude/skills/handbook-pr/scripts/check-handbook-diff.sh`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/scripts/check-handbook-diff.sh)",".claude/skills/new-fma/references/identity-verification.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/identity-verification.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/identity-verification.md)",".claude/skills/new-fma/references/queries.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/queries.md)",".claude/skills/new-fma/references/script-comments.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/script-comments.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/script-comments.md)",".claude/skills/new-fma/references/validator-failures.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/validator-failures.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/validator-failures.md)",".claude/skills/new-fma/references/windows-scripts.md":"# References Skill\n\nPath: `.claude/skills/new-fma/references/windows-scripts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/windows-scripts.md)",".claude/skills/new-fma/scripts/burn_ux.py":"# Claude Directive: burn_ux.py\n\nPath: `.claude/skills/new-fma/scripts/burn_ux.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/burn_ux.py)",".claude/skills/new-fma/scripts/check_queries.sh":"# Claude Directive: check_queries.sh\n\nPath: `.claude/skills/new-fma/scripts/check_queries.sh`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/check_queries.sh)",".claude/skills/new-fma/scripts/pe_info.py":"# Claude Directive: pe_info.py\n\nPath: `.claude/skills/new-fma/scripts/pe_info.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/pe_info.py)","ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json":"# winget Plugin Manifest\n\nPath: `ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json)","ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json":"# winget Plugin Manifest\n\nPath: `ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json)","ee/tools/puppet/fleetdm/CHANGELOG.md":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CHANGELOG.md)","ee/tools/puppet/fleetdm/CONTRIBUTING.md":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/CONTRIBUTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CONTRIBUTING.md)","ee/tools/puppet/fleetdm/README.md":"# fleetdm Documentation\n\nPath: `ee/tools/puppet/fleetdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/README.md)","ee/tools/puppet/fleetdm/hiera.yaml":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/hiera.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/hiera.yaml)","ee/tools/puppet/fleetdm/metadata.json":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/metadata.json)","orbit/pkg/table/ai_tools/README.md":"# ai_tools Documentation\n\nPath: `orbit/pkg/table/ai_tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/pkg/table/ai_tools/README.md)","server/vulnerabilities/nvd/tools/HOWTO.md":"# Tools Skill\n\nPath: `server/vulnerabilities/nvd/tools/HOWTO.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/HOWTO.md)","server/vulnerabilities/nvd/tools/README.md":"# tools Documentation\n\nPath: `server/vulnerabilities/nvd/tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/README.md)","tools/github-manage/pkg/ghapi/README.md":"# ghapi Documentation\n\nPath: `tools/github-manage/pkg/ghapi/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/README.md)","tools/github-manage/pkg/ghapi/TEST_SUMMARY.md":"# Ghapi Skill\n\nPath: `tools/github-manage/pkg/ghapi/TEST_SUMMARY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/TEST_SUMMARY.md)","tools/mdm/apple/appmanifest/README.md":"# appmanifest Documentation\n\nPath: `tools/mdm/apple/appmanifest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/appmanifest/README.md)","tools/mdm/apple/loadtest/README.md":"# loadtest Documentation\n\nPath: `tools/mdm/apple/loadtest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/loadtest/README.md)","tools/mdm/apple/macos-vm-auto-enroll/README.md":"# macos-vm-auto-enroll Documentation\n\nPath: `tools/mdm/apple/macos-vm-auto-enroll/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/macos-vm-auto-enroll/README.md)","tools/mdm/apple/setupexperience/README.md":"# setupexperience Documentation\n\nPath: `tools/mdm/apple/setupexperience/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/setupexperience/README.md)","tools/mdm/migration/echo/README.md":"# echo Documentation\n\nPath: `tools/mdm/migration/echo/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/echo/README.md)","tools/mdm/migration/jamf/README.md":"# jamf Documentation\n\nPath: `tools/mdm/migration/jamf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/jamf/README.md)","tools/mdm/migration/kandji/README.md":"# kandji Documentation\n\nPath: `tools/mdm/migration/kandji/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/kandji/README.md)","tools/mdm/migration/mdmproxy/README.md":"# mdmproxy Documentation\n\nPath: `tools/mdm/migration/mdmproxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/mdmproxy/README.md)","tools/mdm/migration/micromdm/README.md":"# micromdm Documentation\n\nPath: `tools/mdm/migration/micromdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/README.md)","tools/mdm/migration/simplemdm/README.md":"# simplemdm Documentation\n\nPath: `tools/mdm/migration/simplemdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/simplemdm/README.md)","tools/software/vulnerabilities/performance_test/README.md":"# performance_test Documentation\n\nPath: `tools/software/vulnerabilities/performance_test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/README.md)","ee/tools/puppet/fleetdm/data/common.yaml":"# Data Skill\n\nPath: `ee/tools/puppet/fleetdm/data/common.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/data/common.yaml)","tools/loadtest/metrics/runs/historical/README.md":"# historical Documentation\n\nPath: `tools/loadtest/metrics/runs/historical/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/README.md)","tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json":"# Transfertest Skill\n\nPath: `tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json)","tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md":"# Transfertest Skill\n\nPath: `tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md)","tools/mdm/migration/micromdm/touchless/README.md":"# touchless Documentation\n\nPath: `tools/mdm/migration/micromdm/touchless/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/touchless/README.md)","tools/software/vulnerabilities/performance_test/seeder/README.md":"# seeder Documentation\n\nPath: `tools/software/vulnerabilities/performance_test/seeder/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/seeder/README.md)","ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml":"# Fixtures Skill\n\nPath: `ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml)","tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json":"# 483loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json)","tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json":"# 484loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json)","tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md":"# 484loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md)","tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json":"# 485loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json)","tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md":"# 485loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md)","tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json":"# 486loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json)","tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md":"# 486loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md)","tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json":"# 487loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json)","tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md":"# 487loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md)","tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json":"# 489loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json)","tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md":"# 489loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md)","tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json":"# 490loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json)","tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md":"# 490loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md)","tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json":"# 491loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json)","tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md":"# 491loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json":"# 492loadtest-orbit0 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md":"# 492loadtest-orbit0 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json)","tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json)","tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json)","tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md)","tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json":"# 4460loadtesto2 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json)","tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json":"# 4630loadtestbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json)","tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json":"# 4640loadtest-gabe Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json)","tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json":"# 4640loadtestbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json)","tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json":"# 4640loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json)","tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json":"# 4640ltvulnbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json)","tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json":"# 4650loadtestj1 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json)","tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json":"# 4650lt0311 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json)","tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json":"# 4650wincptest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json)","tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json":"# 4660loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json)","tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json":"# 4670loadtestj Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json)","tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json":"# 4673to468mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json)","tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json":"# 4680loadtest02 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json)","tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json":"# 468to469mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json)","tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json":"# 4690loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json)","tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json":"# 469to470mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json)","tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json":"# 470loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json)","tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json":"# 470to471mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json)","tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json":"# 4711to472mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json)","tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json":"# 471loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json)","tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json":"# 4720mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json)","tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json":"# 472loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json)","tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json":"# 4735orch3 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json)","tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json":"# 473loadtest-w3 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json)","tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json":"# 473mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json)","tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json":"# 473to474mig-w1 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json)","tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json":"# 4740mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json)","tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json":"# 4740orch Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json)","tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json":"# 474to475mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json)","tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json":"# 4750orchl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json)","tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json":"# 4750orchl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json)","tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json":"# 475to476mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json)","tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json":"# 476loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json)","tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json":"# 476to477mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json)","tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json":"# 4770loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json)","tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json":"# 477loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json)","tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json":"# 477to478mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json)","tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json":"# 478loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json)","tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json":"# 478to479mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json)","tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json":"# 479loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json)","tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json":"# 479to480mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json)","tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json":"# 480loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json)","tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json":"# 480to481mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json)","tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json":"# 481loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json)","tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json":"# 481to482mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json)","tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json":"# 482loadtest-30 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json)","tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json":"# 482loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json)","tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json":"# 482plusvc Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json)","tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json":"# 482to483mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json)","tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json":"# 483to484mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json)","tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json":"# 484to485mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json)","tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json":"# Andrey-481 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json)","tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json":"# Mig66to68 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json)","tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json":"# Qa-42544 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json)","tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md)","tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json":"# 484win-release Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json)","tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md":"# 484win-release Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json)","tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md)","tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json)","tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md)","tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json":"# 490windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json)","tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md":"# 490windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json)","tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json)","tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md)","tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json":"# 485to486mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json)","tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md":"# 485to486mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md)","tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json":"# 486to487mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json)","tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md":"# 486to487mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json)","tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json)","tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json)","tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json)","tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json)","tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json)","tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md)","ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml":"# Hieradata Skill\n\nPath: `ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md)","cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/AGENTS.md)","tokens":300,"sizeBytes":147},{"name":"fleet-api.md","path":".claude/rules/fleet-api.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-api.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/fleet-api.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-api.md)","tokens":300,"sizeBytes":160},{"name":"fleet-database.md","path":".claude/rules/fleet-database.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-database.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/fleet-database.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-database.md)","tokens":300,"sizeBytes":170},{"name":"fleet-frontend.md","path":".claude/rules/fleet-frontend.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-frontend.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/fleet-frontend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-frontend.md)","tokens":300,"sizeBytes":170},{"name":"fleet-go-backend.md","path":".claude/rules/fleet-go-backend.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-go-backend.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/fleet-go-backend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-go-backend.md)","tokens":300,"sizeBytes":174},{"name":"fleet-orbit.md","path":".claude/rules/fleet-orbit.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-orbit.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/fleet-orbit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-orbit.md)","tokens":300,"sizeBytes":164},{"name":"SKILL.md","path":".claude/skills/ai-profile-test/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/ai-profile-test/SKILL.md","title":"ai-profile-test","category":"anthropic-skill","format":"markdown","content":"---\nname: ai-profile-test\ndescription: Propose a new prompt test case for the AI configuration profile generator's test suite and open a PR. Use when asked to \"add a profile generator test\", \"propose a prompt test case\", \"add a test prompt for AI profiles\", or when a generated profile came out wrong and the failure should become a regression test.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(node *), Bash(cd website && sails run *), Bash(cd website && npm run test-profile-generator *), Read, Grep, Glob, Edit, WebFetch, WebSearch\neffort: medium\n---\n\nAdd a test case to `website/profile-generator/configuration-profile-generator-cases.js` and open a PR. That file is shared by two runners: the mocha suite (`website/profile-generator/tests/configuration-profile-generator.test.js`, one `it()` per case) and the `test-llm-generated-configuration-profile` script (repeated runs with `--parallelTests`). Adding the case to `TEST_CASES` registers it with both — don't edit either runner. Arguments: $ARGUMENTS\n\nUsage: `/ai-profile-test \"<natural-language instruction>\" [csp|mobileconfig|ddm]`\n\n- The instruction is what an admin would type into the profile generator (e.g. `\"Disable the camera\"`). If not provided, ask for it.\n- The profile type is inferred from the instruction when obvious (Windows policy → `csp`; Apple → `mobileconfig` or `ddm`). Ask only if genuinely ambiguous.\n\n## Step 1: Branch off main\n\nThe test cases file only exists on `main` — your current branch (e.g. an RC branch) may not have it.\n\n```\ngit fetch origin\ngit checkout -b add-profile-test-<short-slug> origin/main\n```\n\n## Step 2: Check for existing coverage\n\nRead every entry in `TEST_CASES` in the cases file. If an existing case already exercises the same concrete setting — the same CSP policy node, mobileconfig payload key, or DDM setting key — with the same intended behavior, or a near-identical instruction, STOP and report the overlap to the user instead of opening a PR. Sweep by the exact key name (e.g. `RemovableDiskDenyWriteAccess`), not just by instruction wording.\n\nSharing a payload type or DDM declaration type alone is NOT duplicate coverage — the suite deliberately has multiple cases per declaration (e.g. `ddm-beta-enroll` and `ddm-beta-block` both use `softwareupdate.settings`; the two intelligence cases share `intelligence.settings`). A new setting inside an already-covered declaration or payload still needs its own case.\n\n## Step 3: Verify the mechanism against vendor docs\n\nDo NOT write assertions from memory — a plausible-but-wrong key produces a test that enforces the wrong output forever. Confirm the exact key names, casing, value types, and allowed values:\n\n- **csp**: Microsoft CSP reference (`learn.microsoft.com/en-us/windows/client-management/mdm/`) — exact OMA-URI node path, `Format`, allowed values.\n- **mobileconfig**: Apple's per-payload YAML schemas (`github.com/apple/device-management`, `mdm/profiles/` — e.g. `com.apple.applicationaccess.yaml`) — `PayloadType`, key names with exact casing, value types, allowed values. The rendered docs (`developer.apple.com/documentation/devicemanagement/profile-specific-payload-keys`) cover the same payloads but are JS-rendered; the YAML is easier to fetch and is the source the docs are built from.\n- **ddm**: Apple's declarative device management schemas (same repo, `declarative/declarations/`) — declaration `Type` and payload keys.\n\nKeep the URL(s) you verified against — they go in the PR body so the reviewer can check the assertions without redoing the research.\n\n## Step 4: Write the case\n\nRead the `CASES` comment above `TEST_CASES` first — it documents the assertion design. Then follow the file's conventions:\n\n- `id`: `<profileType>-<short-slug>`, unique across the file.\n- `instructions`: phrased the way an admin would type it, matching the tone of neighboring cases. Don't name the platform — the profile type implies it.\n- `expect`: substring assertions only (compared with all whitespace stripped):\n  - `mustContain` / `mustNotContain`: raw substrings.\n  - `mustContainElement` / `mustNotContainElement`: `[tag, value]` pairs, e.g. `['Format', 'int']` or `['key', 'autohide']` — XML only (csp and mobileconfig). They compile to `<tag>value</tag>` regexes, so in a DDM case they never match the JSON output and a `mustNotContainElement` silently passes. DDM cases express keys and values as raw `mustContain` / `mustNotContain` substrings like `'\"MinorPeriodInDays\":30'`, following the existing DDM cases.\n  - Bind a value to its key as one adjacent-pair substring — whitespace stripping makes `'<key>allowBookstore</key><true/>'` work. Asserting the key and the value separately lets a value elsewhere in the profile satisfy the check.\n  - `mustNotContainOutsideCdata`: `mustNotContain` with CDATA sections blanked first — for rules about the profile itself rather than a document it transports (e.g. `'<?xml'` in a CSP case whose CDATA carries a WLANProfile).\n  - Assert against the tempting wrong answers too: the lookalike key that doesn't do what the instruction asks, wrong casing, `bool` where the CSP wants `int`, an inverted value.\n- `readByEye`: only for properties assertions can't express (one dict per payload domain, distinct PayloadUUIDs, single-line CDATA). Omit otherwise.\n- Do NOT set `canary: true` — canaries are a curated set of exact-substring sentinel cases, not a flag for new proposals.\n- Append the case to the end of its profile-type section (`CSP` / `MOBILECONFIG` / `DDM`).\n\n## Step 5: Validate\n\nAlways: `node --check website/profile-generator/configuration-profile-generator-cases.js`\n\nIf a website dev environment with an Anthropic API key is available, run the case for real (it spends API money — a few cents per run). Either runner works; the mocha suite checks one generation (including the 10s latency budget), the script measures how often it passes:\n\n```\ncd website && sails_custom__anthropicSecret='…' npm run test-profile-generator -- --grep '<id>:'\ncd website && sails run test-llm-generated-configuration-profile --caseId=<id> --parallelTests=3\n```\n\nSkipping this when the environment isn't available is fine — but the PR body must say whether the case was run against the live model or not.\n\n## Step 6: Open the PR\n\n1. Commit with a subject like `Website: Add profile generator test case for <thing>`.\n2. Push and open a PR against `main` with the body built from `.github/pull_request_template.md` (the `check-pr-template` CI check fails freeform descriptions).\n3. The body must include: what the case asserts and why, the vendor doc URL(s) from Step 3, whether the case was run against the live model, and the `sails run … --caseId=<id> --parallelTests=5` command for the reviewer.\n","frontmatter":{"name":"ai-profile-test","description":"Propose a new prompt test case for the AI configuration profile generator's test suite and open a PR. Use when asked to \"add a profile generator test\", \"propose a prompt test case\", \"add a test prompt for AI profiles\", or when a generated profile came out wrong and the failure should become a regression test.","allowed-tools":"Bash(git *), Bash(gh pr *), Bash(node *), Bash(cd website && sails run *), Bash(cd website && npm run test-profile-generator *), Read, Grep, Glob, Edit, WebFetch, WebSearch","effort":"medium","allowedTools":["Bash(git","*),","Bash(gh","pr","*),","Bash(node","*),","Bash(cd","website","&&","sails","run","*),","Bash(cd","website","&&","npm","run","test-profile-generator","*),","Read,","Grep,","Glob,","Edit,","WebFetch,","WebSearch"]},"allowedTools":["Bash(git","*),","Bash(gh","pr","*),","Bash(node","*),","Bash(cd","website","&&","sails","run","*),","Bash(cd","website","&&","npm","run","test-profile-generator","*),","Read,","Grep,","Glob,","Edit,","WebFetch,","WebSearch"],"isInternal":false,"tokens":1590,"sizeBytes":6762},{"name":"SKILL.md","path":".claude/skills/aikido-tickets/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/aikido-tickets/SKILL.md","title":"aikido-tickets","category":"anthropic-skill","format":"markdown","content":"---\nname: aikido-tickets\ndescription: Create GitHub issues in fleetdm/confidential for Aikido pen test findings. Use when asked to \"create aikido tickets\", \"aikido ticket\", or \"create pen test tickets\".\nallowed-tools: Bash(gh *), Bash(jq *), Read, Grep, Glob, Agent, Write\nmodel: sonnet\neffort: high\n---\n\n# Create Aikido Pen Test Tickets\n\nCreate GitHub issues in `fleetdm/confidential` for Aikido penetration test findings.\n\n## Prerequisites\n\nBefore starting, walk the user through these steps:\n\n### 1. Export the Aikido report\n\nThe user needs to download the pen test report PDF from Aikido:\n\n1. Go to the Aikido assessment page (e.g., `app.aikido.dev/ai-pentests/projects/.../assessments/.../issues`)\n2. Click the purple **\"Download Report\"** button in the top-right corner\n3. Select **\"Detailed Auditor Report\"** (this contains every finding with technical details and remediation steps)\n4. Click **Continue** and save the downloaded PDF\n5. Provide the path to the downloaded PDF\n\n### 2. GitHub project board permissions\n\nAdding issues to project boards requires the `project` scope on the GitHub CLI token. Test by running:\n\n```bash\ngh project list --owner fleetdm --limit 1\n```\n\nIf this fails with a scope error, the user needs to run interactively:\n\n```bash\ngh auth refresh -s project -h github.com\n```\n\n**Alternative:** If the user cannot or prefers not to grant project scope, skip the project board step. The issues will still be created with correct labels and assignment. The user (or their manager) can manually drag them into the correct project board column afterward.\n\n## Inputs\n\nAsk the user for these if not provided:\n\n- **Pen test PDF report path:** Path to the downloaded Aikido detailed auditor report PDF\n- **PT ID(s):** Which PT-* findings to create tickets for (specific IDs, a range, or \"all\")\n- **Team:** Which team owns the findings (determines labels, project board, and parent story)\n- **Assignee:** GitHub username to assign the tickets to\n- **Parent story:** The confidential issue number that tracks these findings (e.g., #16715)\n\n## Teams and project boards\n\n| Team | Label | GitHub Project |\n|------|-------|----------------|\n| Orchestration | `#g-orchestration` | https://github.com/orgs/fleetdm/projects/71/ |\n| Supply Chain | `#g-supply-chain` | https://github.com/orgs/fleetdm/projects/97/ |\n| MDM | `#g-mdm` | https://github.com/orgs/fleetdm/projects/58/ |\n| Software | `#g-software` | https://github.com/orgs/fleetdm/projects/70/ |\n| First Impressions | `#g-first-impressions` | https://github.com/orgs/fleetdm/projects/105/ |\n\nIf the user specifies a team not listed here, ask for the team label and project URL/number.\n\n## Ticket format\n\n### Title\n```\nAikido-PT-{number} [{SEVERITY}]: {concise title from the finding}\n```\n\n### Body structure\n\n```markdown\n## {concise title}\n\n{1-2 sentence explanation of what is wrong}\n\nSee full details below.\n\n### Attack path\n\n{Concise but complete description of how an attacker exploits this vulnerability}\n\n### Fix\n\n**Option 1 (recommended):** {Best fix approach described concisely}\n\n{Only add Option 2, Option 3 etc. if there are genuinely different viable approaches. If one fix is clearly best, only list that one.}\n\n---\n\n**Aikido ref:** PT-{number} | CVSS {score} | `{primary affected file}`\n**Parent story:** #{parent_story_number}\n\n---\n\n<details>\n<summary>Aikido pen test details (PT-{number})</summary>\n\n{Full content from the Aikido PDF report for this finding, including:}\n### Description\n{original description}\n\n### Business impact\n{original business impact}\n\n### How to exploit\n{all exploit steps with code blocks}\n\n### Remediation\n{all remediation bullets from the report}\n\n### References\n{CVSS score and vector}\n\n</details>\n```\n\n## Process\n\n1. **Read the finding** from the pen test PDF report. Locate each finding by its `PT-{N}` header rather than guessing page numbers. Scan for `2.3.X PT-{N} - {Title}` headers in the detailed findings section (starts around page 15). Read pages in chunks to find the right section.\n\n2. **Write the ticket body** following the format above:\n   - The top section (title, explanation, attack path, fix) is YOUR synthesis of the finding, written concisely\n   - The foldable `<details>` section at the bottom contains the ORIGINAL Aikido report content verbatim\n\n3. **Write the body to a temp file and create the issue:**\n   ```bash\n   # Write body to temp file to avoid shell escaping issues\n   cat > /tmp/aikido-pt-{N}.md << 'BODY'\n   {body content}\n   BODY\n\n   gh issue create --repo fleetdm/confidential \\\n     --title \"Aikido-PT-{N} [{SEVERITY}]: {title}\" \\\n     --assignee {assignee} \\\n     --label \"bug,~security,~vulnerability-management,{team_label},p3\" \\\n     --body-file /tmp/aikido-pt-{N}.md\n   ```\n\n4. **Add to the correct project board and set status to Ready:**\n   ```bash\n   # Get project node ID\n   PROJECT_NODE_ID=$(gh api graphql -f query='{ organization(login: \"fleetdm\") { projectV2(number: {project_number}) { id } } }' | jq -r '.data.organization.projectV2.id')\n\n   # Add to project\n   ITEM_ID=$(gh project item-add {project_number} --owner fleetdm --url {issue_url} --format json | jq -r '.id')\n\n   # Get Status field ID and Ready option ID\n   READY_INFO=$(gh project field-list {project_number} --owner fleetdm --format json | jq '.fields[] | select(.name == \"Status\")')\n   STATUS_FIELD_ID=$(echo \"$READY_INFO\" | jq -r '.id')\n   READY_OPTION_ID=$(echo \"$READY_INFO\" | jq -r '.options[] | select(.name | test(\"Ready\")) | .id')\n\n   # Set to Ready\n   gh project item-edit --project-id $PROJECT_NODE_ID --id $ITEM_ID --field-id $STATUS_FIELD_ID --single-select-option-id $READY_OPTION_ID\n   ```\n\n   If the project scope is not available, inform the user that tickets were created but need to be manually added to the project board.\n\n5. **Report** the created issue URL to the user.\n\n## Batch creation\n\nWhen creating many tickets at once, delegate to subagents via the `Agent` tool. Launch the whole batch of subagents in a single message so findings are processed concurrently.\n\nSplit the requested findings into groups of ~5-7 and spawn one subagent per group (aim for 5-6 subagents at a time). Give each subagent its assigned `PT-{N}` list and instruct it to:\n\n- Locate each finding by its `PT-{N}` header and read those pages of the PDF\n- Draft the ticket body and write it to a temp file\n- Create the issue with `--body-file`, correct labels, and assignee\n- Add each issue to the project board and set status to Ready\n- Return the created issue URLs (and any failures) so the run is resumable\n\n## Important notes\n\n- All tickets go in `fleetdm/confidential` (private repo) since they contain security findings\n- Always use `p3` priority label unless the user specifies otherwise\n- Always use `bug` label (not `story`)\n- The foldable `<details>` section preserves the full Aikido evidence for reference\n- When creating many tickets, read the PDF pages for each finding to get accurate details\n- For the Fix section: if one fix is clearly the best, only list that one. Only list multiple options if there are genuinely different viable approaches\n- Fetch project field IDs at runtime rather than hardcoding, since they can change across projects\n","frontmatter":{"name":"aikido-tickets","description":"Create GitHub issues in fleetdm/confidential for Aikido pen test findings. Use when asked to \"create aikido tickets\", \"aikido ticket\", or \"create pen test tickets\".","allowed-tools":"Bash(gh *), Bash(jq *), Read, Grep, Glob, Agent, Write","model":"sonnet","effort":"high","allowedTools":["Bash(gh","*),","Bash(jq","*),","Read,","Grep,","Glob,","Agent,","Write"]},"allowedTools":["Bash(gh","*),","Bash(jq","*),","Read,","Grep,","Glob,","Agent,","Write"],"isInternal":false,"tokens":1798,"sizeBytes":7195},{"name":"conventions.md","path":".claude/skills/api-design-check/references/conventions.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/api-design-check/references/conventions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/api-design-check/references/conventions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/api-design-check/references/conventions.md)","tokens":300,"sizeBytes":227},{"name":"SKILL.md","path":".claude/skills/api-design-check/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/api-design-check/SKILL.md","title":"api-design-check","category":"anthropic-skill","format":"markdown","content":"---\nname: api-design-check\ndescription: Check a proposed or changed Fleet REST API endpoint against existing API conventions (URL shape, parameter names, pagination, response envelope, status codes, Fleets/Reports naming, Premium markers, api_endpoints.yml). Use when asked to \"check API conventions\", \"review this API design\", \"is this endpoint consistent\", or when reviewing a reference-docs PR labeled ~api-or-yaml-design.\nallowed-tools: Read, Grep, Glob, Bash\neffort: high\n---\n\n# Check an API design against existing Fleet conventions\n\nTarget: $ARGUMENTS\n\nThe target can be a PR number, a branch, a spec file, or a pasted endpoint. With no target, use the current branch's diff against `main`.\n\nFleet has no written API style guide. The rule is \"be consistent with what's already there\", so this check compares the proposal with **real existing endpoints**. `references/conventions.md` records the patterns that are hard to infer from a single neighbor.\n\n## 1. Collect the proposed endpoints\n\n- **Docs PR or branch**: diff `docs/API/rest-api.md` (and `docs/Contributing/reference/api-for-contributors.md` for internal endpoints). Each endpoint is a `### Heading`, then a `` `METHOD /api/v1/fleet/...` `` line, then `#### Parameters`, `#### Example`, and `##### Default response`.\n- **Code**: diff `server/service/handler.go` and `ee/server/service/handler.go` for new `ue.GET/POST/PATCH/PUT/DELETE` registrations. Read the matching request and response structs for the parameter and response field names.\n- **Spec or pasted text**: read the endpoint definitions directly.\n\nFor each endpoint, write down: the method, the path, the parameters (name, type, `in`), the response body keys, the status code, and whether it's Premium.\n\n## 2. Find the closest existing endpoints\n\nFor each proposed endpoint, find 2–4 existing endpoints to compare it with, in `docs/API/rest-api.md`. Use them in this order:\n\n1. The same resource with a different verb. For a new `PATCH /fleet/foo/:id`, compare `GET /fleet/foo/:id` and `POST /fleet/foo`.\n2. The same kind of operation on a sibling resource. A new list endpoint is compared with other `List ...` endpoints, a host-scoped action with other `POST /hosts/:id/...` actions, and a Fleet Desktop endpoint with other `/device/:token/...` endpoints.\n3. Recently added endpoints over old ones when they disagree. Check with `git log -S '<path>' --format='%h %ad' --date=short -- \"docs/API/rest-api.md\"`. Older endpoints are often the inconsistent ones.\n\nQuote the neighbor you compared against in each finding. A finding with no existing endpoint as evidence is an opinion, so drop it or label it as one.\n\n## 3. Check each dimension\n\nGo through `references/conventions.md` section by section. At minimum, check these:\n\n- **URL**: the resource noun and its plural form, snake_case, path parameter names, and where it sits in the hierarchy (`/hosts/:id/...`, `/device/:token/...`, `/spec/...`, `.../batch`).\n- **Method and verb**: the HTTP method matches the heading verb (List/Get/Create/Add/Update/Delete), and actions are `POST` to a sub-path.\n- **Parameters**: the names and types of shared parameters (`fleet_id`, `page`, `per_page`, `order_key`, `order_direction`, `after`, `query`, `platform`, `labels_include_any`, ...), and that `In` (path/query/body/form) is correct. A path parameter documented as `body` is a doc bug.\n- **Response**: the list envelope (`{\"<plural>\": [...], \"meta\": {...}}` and/or `count`), the single-object shape (a bare object or wrapped in `{\"<singular>\": {...}}`, matching the resource's other endpoints), IDs as integers, timestamps as RFC 3339 UTC, and snake_case keys.\n- **Status codes**: 200 for normal success, 202 for queued or async host actions, 204 for no body, and 201 only for SCIM. Error codes should match the semantics neighbors use (409 conflict, 422 validation, 404 not found).\n- **Terminology**: new names use `fleet`/`fleets` and `report`/`reports`, never `team`/`query` in the product sense. Renamed fields need the `renameto` alias in code.\n- **Premium and auth**: the `_Available in Fleet Premium._` marker on Premium-only parameters and endpoints, and a documented non-default auth (node key, device token).\n- **Registration**: the new endpoint is listed in `server/api_endpoints/api_endpoints.yml` with a display name that matches the doc heading.\n- **Doc structure**: the section order, a `Default response` with `Status:`, an example that uses realistic IDs, and a link from the section's table of contents.\n\n## 4. Report\n\nGroup the findings like this:\n\n1. **Inconsistent**: the proposal deviates from a clear majority pattern. Show the proposed value, the existing convention, and 1–2 neighbor endpoints as evidence.\n2. **Split convention**: existing endpoints disagree (`conventions.md` marks these). Don't pick a winner. Name both patterns and say that it's a call for the API design DRI.\n3. **Doc nits**: wrong `In` column, a missing `Status:` line, an anchor not in the TOC, and so on.\n\nKeep it short: one line per finding plus the evidence. If a dimension is consistent, don't list it. End by saying which endpoints were compared.\n\nDon't edit files or post on GitHub. This is a read-only check.\n","frontmatter":{"name":"api-design-check","description":"Check a proposed or changed Fleet REST API endpoint against existing API conventions (URL shape, parameter names, pagination, response envelope, status codes, Fleets/Reports naming, Premium markers, api_endpoints.yml). Use when asked to \"check API conventions\", \"review this API design\", \"is this endpoint consistent\", or when reviewing a reference-docs PR labeled ~api-or-yaml-design.","allowed-tools":"Read, Grep, Glob, Bash","effort":"high","allowedTools":["Read,","Grep,","Glob,","Bash"]},"allowedTools":["Read,","Grep,","Glob,","Bash"],"isInternal":false,"tokens":1249,"sizeBytes":5197},{"name":"SKILL.md","path":".claude/skills/bump-migration/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/bump-migration/SKILL.md","title":"bump-migration","category":"anthropic-skill","format":"markdown","content":"---\nname: bump-migration\ndescription: Bump a database migration's timestamp to the current time. Required when a PR's migration is older than one already merged to main. Use when asked to \"bump migration\", \"update migration timestamp\", or when a migration ordering conflict is detected.\nallowed-tools: Bash(go run *), Bash(make dump-test-schema*), Bash(git diff*), Bash(ls *), Read, Grep, Glob\nmodel: sonnet\neffort: medium\n---\n\n# Bump a database migration timestamp\n\nBump the migration: $ARGUMENTS\n\n## When to use\n\nThis is required when a PR has a database migration with a timestamp older than a migration already merged to main. This happens when a PR has been pending merge for a while and another PR got merged with a more recent migration.\n\n## Process\n\n### 1. Identify the migration to bump\n\nIf the user provided a filename, use that. Otherwise, find migrations on this branch that are older than the latest on main:\n\n```bash\n# List migrations on this branch that aren't on main\ngit diff origin/main --name-only -- server/datastore/mysql/migrations/tables/\n```\n\n### 2. Run the bump tool\n\nThe tool lives at `tools/bump-migration/main.go`. Run it from the repo root:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go\n```\n\nThis will:\n- Rename the migration file with a new current timestamp\n- Rename the test file (if it exists)\n- Update all function names inside both files (`Up_OLDTS` → `Up_NEWTS`, `Down_OLDTS` → `Down_NEWTS`, `TestUp_OLDTS` → `TestUp_NEWTS`)\n\n### 3. Optionally regenerate the schema\n\nIf the migration affects the schema, add `--regen-schema` to also run `make dump-test-schema`:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go --regen-schema\n```\n\n### 4. Verify\n\n- Check that the old files are gone and new files exist with the updated timestamp\n- Verify the function names inside the files match the new timestamp\n- Run `go build ./server/datastore/mysql/migrations/...` to check compilation\n\n## Rules\n- Always run from the repo root\n- Provide the migration filename, not the test filename\n- The tool handles both the migration and its test file automatically\n","frontmatter":{"name":"bump-migration","description":"Bump a database migration's timestamp to the current time. Required when a PR's migration is older than one already merged to main. Use when asked to \"bump migration\", \"update migration timestamp\", or when a migration ordering conflict is detected.","allowed-tools":"Bash(go run *), Bash(make dump-test-schema*), Bash(git diff*), Bash(ls *), Read, Grep, Glob","model":"sonnet","effort":"medium","allowedTools":["Bash(go","run","*),","Bash(make","dump-test-schema*),","Bash(git","diff*),","Bash(ls","*),","Read,","Grep,","Glob"]},"allowedTools":["Bash(go","run","*),","Bash(make","dump-test-schema*),","Bash(git","diff*),","Bash(ls","*),","Read,","Grep,","Glob"],"isInternal":false,"tokens":525,"sizeBytes":2183},{"name":"SKILL.md","path":".claude/skills/cherry-pick/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/cherry-pick/SKILL.md","title":"cherry-pick","category":"anthropic-skill","format":"markdown","content":"---\nname: cherry-pick\ndescription: Cherry-pick a merged PR into the current RC branch. Use when asked to \"cherry-pick\", \"cp into RC\", or after merging a PR that needs to go into the current release.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(gh api *), Read, Grep, Glob\neffort: low\n---\n\nCherry-pick a merged PR into the current RC branch. Arguments: $ARGUMENTS\n\nUsage: `/cherry-pick <PR_NUMBER> [RC_BRANCH]`\n\n- `PR_NUMBER` (required): The PR number to cherry-pick (e.g. `43078`). If not provided, ask the user.\n- `RC_BRANCH` (optional): The target RC branch name (e.g. `rc-minor-fleet-v4.83.0`). If not provided, auto-detect the most recent one.\n\n## Step 1: Ensure main is up to date\n\n1. `git fetch origin`\n2. `git checkout main`\n3. `git pull origin main`\n\n## Step 2: Identify the RC branch\n\nIf an RC branch was provided as the second argument, use it (but still confirm with the user before proceeding).\n\nOtherwise, auto-detect by listing both minor and patch RC branches:\n\n```\ngit for-each-ref 'refs/remotes/origin/rc-minor-fleet-v*' 'refs/remotes/origin/rc-patch-fleet-v*' --format='%(refname:strip=3)' | grep -E '^rc-(minor|patch)-fleet-v[0-9]+\\.[0-9]+\\.[0-9]+$' | sort -V\n```\n\nFrom the results, suggest the most recent `rc-minor-fleet-v*` branch as the default. If patch branches also exist, mention them as alternatives. **Always ask the user to confirm the target RC branch before proceeding.**\n\n## Step 3: Get the merge commit and GitHub username\n\n1. Get the PR title:\n   ```\n   gh pr view <PR_NUMBER> --json title --jq .title\n   ```\n2. Get the merge commit SHA:\n   ```\n   gh pr view <PR_NUMBER> --json mergeCommit --jq .mergeCommit.oid\n   ```\n   If this returns `null` or an empty value, the PR is not yet merged. Tell the user and stop.\n3. Get the GitHub username: `gh api user --jq .login`\n\n## Step 4: Cherry-pick onto a new branch\n\n1. Create a new branch off the RC branch:\n   ```\n   git checkout -b <github-username>/<short-description>-cp origin/<rc-branch>\n   ```\n   Derive `<short-description>` from the PR title (lowercase, hyphens, keep it short — 3-5 words max).\n2. Check whether the commit is a merge commit by inspecting its parents:\n   ```\n   git rev-list --parents -n 1 <merge-commit-SHA>\n   ```\n   If the commit has multiple parents, run:\n   ```\n   git cherry-pick -m 1 <merge-commit-SHA>\n   ```\n   Otherwise (squash-merged or rebased), run:\n   ```\n   git cherry-pick <merge-commit-SHA>\n   ```\n3. If there are conflicts, stop and tell the user which files conflict. Do NOT attempt to resolve them automatically.\n\n## Step 5: Push and open PR\n\n1. Push the branch: `git push -u origin HEAD`\n2. Open a PR targeting the RC branch (NOT main):\n   ```\n   gh pr create --base <rc-branch> --title \"Cherry-pick #<PR_NUMBER>: <original-title>\" --body \"$(cat <<'EOF'\n   Cherry-pick of #<PR_NUMBER> into the RC branch.\n   EOF\n   )\"\n   ```\n3. Report the PR URL to the user.\n","frontmatter":{"name":"cherry-pick","description":"Cherry-pick a merged PR into the current RC branch. Use when asked to \"cherry-pick\", \"cp into RC\", or after merging a PR that needs to go into the current release.","allowed-tools":"Bash(git *), Bash(gh pr *), Bash(gh api *), Read, Grep, Glob","effort":"low","allowedTools":["Bash(git","*),","Bash(gh","pr","*),","Bash(gh","api","*),","Read,","Grep,","Glob"]},"allowedTools":["Bash(git","*),","Bash(gh","pr","*),","Bash(gh","api","*),","Read,","Grep,","Glob"],"isInternal":false,"tokens":816,"sizeBytes":2890},{"name":"SKILL.md","path":".claude/skills/command-palette/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/command-palette/SKILL.md","title":"command-palette","category":"anthropic-skill","format":"markdown","content":"---\nname: command-palette\ndescription: Authoring guide for the Fleet command palette. Use when adding or editing items in frontend/components/CommandPalette/groups/, when editing frontend/router/paths.ts or frontend/router/index.tsx, or when adding a new top-level page, global create action, MDM connector / singleton config, automation hook, or picker action that needs a palette entry.\nallowed-tools: Read, Grep, Glob, Bash(yarn test*)\neffort: medium\n---\n\n# Command palette authoring\n\nThe canonical guide lives in **`frontend/docs/patterns.md` § Command palette** — read that first. It covers what belongs (and what doesn't), the group-to-file mapping, required/optional fields, label conventions, the full keyword/synonym checklist, permission gating, `teamName` chips, search-only items, and test expectations.\n\nThis skill exists to make sure that guide gets followed when palette-worthy changes land.\n\n## Before adding an item\n\n1. **Read `frontend/docs/patterns.md` § Command palette** end to end.\n2. **Grep the target group file** for similar existing items. Match their shape — field order, keyword style, gating, `teamName` helper usage — instead of inventing a new pattern. The groups are the source of truth for current conventions:\n   ```\n   frontend/components/CommandPalette/groups/\n   ```\n3. **Confirm the destination page's own permission check**, then mirror it on the palette item using a flag from `ICommandPaletteContext` (`frontend/components/CommandPalette/helpers.ts`). Add a new flag there only if no existing one models the destination's check. Don't route users to a screen they can't use.\n4. **Premium paywall check:** if the destination page (or the specific tab/section the link lands on) renders `<PremiumFeatureMessage />` for `!isPremiumTier`, gate the palette item on `isPremiumTier` so it's hidden on Free. A palette entry that lands on the upsell wall is a bait-and-switch — the palette is for actions, not for marketing the paid tier. Mirror tab-level paywalls too (e.g., `paths.ADMIN_INTEGRATIONS_SSO_END_USERS` lands on a Premium-only tab even though the parent SSO page works on Free). If the destination only paywalls a sub-section (not the whole page or the linked tab), don't gate — the page is still useful on Free.\n\n## After adding an item\n\n1. **Update `frontend/components/CommandPalette/helpers.tests.ts`**:\n   - Assert the item appears for the right roles and hides for the wrong ones\n   - If premium-only: assert absence in the `Fleet Free (isPremiumTier: false)` block\n   - If hidden in primo mode: add to the `Primo Mode (isPrimoMode: true)` block\n   - If it sets a `teamName` chip: assert it renders / doesn't render against the relevant fleet contexts\n2. Run the palette tests:\n   ```\n   yarn test frontend/components/CommandPalette/helpers.tests.ts\n   ```\n   (Note: test files use `.tests.ts` plural, and `yarn test` — not `yarn jest` — uses the project's jest config.)\n\n## When *not* to add an entry\n\n- Per-entity edit / delete operations (the entity is already in scope on its row or detail page)\n- Bulk-select operations that depend on an existing selection\n- One-off UI affordances (toggles, expanders) tied to a single view\n\nSee patterns.md for the dividing line and the full \"doesn't belong\" list.\n","frontmatter":{"name":"command-palette","description":"Authoring guide for the Fleet command palette. Use when adding or editing items in frontend/components/CommandPalette/groups/, when editing frontend/router/paths.ts or frontend/router/index.tsx, or when adding a new top-level page, global create action, MDM connector / singleton config, automation hook, or picker action that needs a palette entry.","allowed-tools":"Read, Grep, Glob, Bash(yarn test*)","effort":"medium","allowedTools":["Read,","Grep,","Glob,","Bash(yarn","test*)"]},"allowedTools":["Read,","Grep,","Glob,","Bash(yarn","test*)"],"isInternal":false,"tokens":750,"sizeBytes":3273},{"name":"content-types.md","path":".claude/skills/content-style/references/content-types.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/content-types.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/content-style/references/content-types.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/content-types.md)","tokens":300,"sizeBytes":225},{"name":"positioning.md","path":".claude/skills/content-style/references/positioning.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/positioning.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/content-style/references/positioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/positioning.md)","tokens":300,"sizeBytes":221},{"name":"style-rules.md","path":".claude/skills/content-style/references/style-rules.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/style-rules.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/content-style/references/style-rules.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/style-rules.md)","tokens":300,"sizeBytes":221},{"name":"SKILL.md","path":".claude/skills/content-style/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/SKILL.md","title":"content-style","category":"anthropic-skill","format":"markdown","content":"---\nname: content-style\ndescription: Write, edit, and review any public-facing or customer/prospect-facing Fleet content so it follows Fleet's writing, brand, voice, and style guidelines. Use this whenever you create or change the words in website copy (fleetdm.com), handbook pages, docs, guides, tutorials, articles, blog posts, announcements, release notes, product UI text and microcopy, GitHub issues about content, or marketing and sales enablement material, even if the user never says \"style guide.\" Trigger on edits under website/, handbook/, docs/, articles/, and on requests like \"write a blog post,\" \"draft an announcement,\" \"review this guide for style,\" \"make this sound like Fleet,\" \"tighten this up,\" or \"clean up this copy.\" This skill is for authoring and editing prose for voice, brand, and style. It does not apply to writing code, tests, scripts, commit messages, or internal team chat, even when those happen to mention articles, announcements, blog posts, or UI strings.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet content style\n\nProduce and refine written content that sounds like Fleet: radically honest, technically precise, and \"Mister Rogers\" kind. The reader is an IT professional, client platform engineer, or security practitioner. Write to them as a helpful expert peer, never as a salesperson.\n\nThis skill works both inside the Fleet repo and outside it. The rules below are self-contained, but when the handbook is present it is the source of truth — read it first so you always reflect the latest guidance.\n\n## When you start\n\n1. **Identify the content type and the mode.** Type drives format discipline: website copy, guide/tutorial, article/blog, announcement, docs reference, product UI text, or marketing/sales enablement. Mode is either *writing new* content or *reviewing/editing existing* content. If the type or intended placement is unclear, ask — don't guess, because format rules differ by type.\n\n2. **Load the canonical guidelines if they exist.** When working in a repo that contains them, read these before writing, since they may have been updated since this skill was written:\n   - `handbook/company/writing.md` — the full writing guide: style, headings, links, lists, and numbers (start here)\n   - `handbook/company/brand.md` — visual brand, naming, imagery\n   If they aren't present (e.g. drafting external copy), use the embedded rules below.\n\n3. **For marketing and sales content, align positioning.** Read `references/positioning.md` — a brief distilled from the \"Implicating the pain\" positioning doc and the \"Fleet for IT engineers and admins\" sales deck (links inside). It covers the audience's pains, the \"implicate the pain\" narrative method, Fleet's differentiators, and messaging do's and don'ts. Treat its proof points as needing verification: never publish a stat, customer quote, or named claim without confirming it against a public, approved source, and ask the user if you can't.\n\n4. **Read the full rules for anything non-trivial.** `references/style-rules.md` has the complete mechanics with examples; `references/content-types.md` has per-type format discipline and the article/guide/announcement endmatter templates. The checklist below is the fast path, not the whole story.\n\n## The core of Fleet's voice\n\n- **Plain English, short sentences, active voice.** One idea per sentence. If a sentence runs past ~20 words, split it. \"Fleet manages hosts,\" not \"Hosts are managed by Fleet.\"\n- **Imperative mood for instructions.** \"Click **Save**,\" not \"You should click Save.\"\n- **Clarity over cleverness.** If a sentence is clever but obscures meaning, rewrite it. The goal is for the reader to understand, not for the writer to look smart.\n- **Radical honesty.** State bugs, limitations, and gaps plainly. Never use marketing spin to hide them.\n- **No snark, no hype.** Treat the reader as an equal. Never condescending, edgy, or sarcastic.\n\n## High-frequency rules (the fast checklist)\n\nThese are the rules content most often gets wrong. Apply them on every pass.\n\n- **Sentence case everywhere** — headings, subheadings, buttons, UI labels. \"Host details,\" not \"Host Details.\" Only proper nouns, acronyms, and self-styled names (macOS, osquery) keep their casing.\n- **Commas, not em dashes.** Avoid em dashes entirely. Use a comma, a colon, or a new sentence. This is the single most common AI tell to strip.\n- **Oxford comma, always.** \"macOS, Windows, and Linux.\"\n- **Bold UI elements only.** \"Navigate to **Hosts**.\" Never bold for emphasis or to decorate. Excessive bolding is an AI tell.\n- **Cut filler.** Delete \"very,\" \"really,\" \"actually,\" \"basically,\" \"essentially,\" and \"just.\" Use common words: \"help,\" not \"facilitate.\"\n- **No hyperbole.** Strip \"revolutionary,\" \"game-changing,\" \"seamless,\" \"powerful,\" \"robust,\" \"unprecedented,\" \"industry-leading,\" \"best-in-class.\"\n- **Fleet naming.** The product and company are **Fleet** (or Fleet Device Management) — never \"FleetDM,\" \"fleetDM,\" or \"fleetdm\" in prose. Lowercase `osquery`, `fleetctl`, `fleetd` (rewrite the sentence if one would start it). Capitalize Fleet Desktop and Orbit.\n- **Preferred terms.** Use \"hosts,\" \"devices,\" \"computers,\" \"Fleet UI,\" \"Fleet server.\" Avoid \"agents\" and \"nodes.\" Prefer \"device\" over \"endpoint.\"\n- **No fabrication.** Never invent features, URLs, names, dates, version numbers, or CLI commands. If you don't have something you need, ask — it's better not to know than to make it up.\n- **Strip AI intros.** No \"In the rapidly evolving world of…,\" no throat-clearing. Lead with the substance.\n\n## Writing mode\n\nDraft directly in the target format and apply the rules as you write — don't write loose prose and clean it up after. Lead with the \"why\" before the \"how.\" Match the format discipline for the content type (see `references/content-types.md`): guides get numbered steps, announcements lead with the news, website copy is scannable and benefit-focused, articles are conversational but professional.\n\nBefore presenting a draft, do one self-review pass against the checklist above, reading specifically for em dashes, over-bolding, filler, hype, and sentence-case slips — these survive even careful first drafts.\n\n## Review / edit mode\n\nWhen the user hands you existing content (or you're editing files in a diff):\n\n1. Read the content and identify its type.\n2. Go through it against the checklist and the full rules, noting each issue with its location.\n3. Apply the fixes directly (Edit), or if the user wants a critique, report findings as a short list grouped by rule — quote the original, give the corrected version, and name the rule. Keep it specific and actionable; don't pad with praise.\n4. Preserve the author's meaning and technical accuracy. Style edits must never change facts. If a sentence is factually unclear, flag it rather than rewriting it into something that might be wrong.\n\nWhen in doubt, simplify.\n","frontmatter":{"name":"content-style","description":"Write, edit, and review any public-facing or customer/prospect-facing Fleet content so it follows Fleet's writing, brand, voice, and style guidelines. Use this whenever you create or change the words in website copy (fleetdm.com), handbook pages, docs, guides, tutorials, articles, blog posts, announcements, release notes, product UI text and microcopy, GitHub issues about content, or marketing and sales enablement material, even if the user never says \"style guide.\" Trigger on edits under website/, handbook/, docs/, articles/, and on requests like \"write a blog post,\" \"draft an announcement,\" \"review this guide for style,\" \"make this sound like Fleet,\" \"tighten this up,\" or \"clean up this copy.\" This skill is for authoring and editing prose for voice, brand, and style. It does not apply to writing code, tests, scripts, commit messages, or internal team chat, even when those happen to mention articles, announcements, blog posts, or UI strings.","allowed-tools":"Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)","effort":"medium","allowedTools":["Read,","Grep,","Glob,","Edit,","Write,","Bash(git","diff*),","Bash(git","status*)"]},"allowedTools":["Read,","Grep,","Glob,","Edit,","Write,","Bash(git","diff*),","Bash(git","status*)"],"isInternal":false,"tokens":1605,"sizeBytes":6982},{"name":"SKILL.md","path":".claude/skills/find-related-tests/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/find-related-tests/SKILL.md","title":"find-related-tests","category":"anthropic-skill","format":"markdown","content":"---\nname: find-related-tests\ndescription: Find test files and functions related to recent git changes. Suggests exact go test commands with correct env vars.\nallowed-tools: Bash(git *), Read, Grep, Glob\neffort: low\n---\n\nLook at my recent git changes (`git diff` and `git diff --cached`) and find all related test files.\n\nFor each modified file, find:\n1. The `_test.go` file in the same package\n2. Integration tests that exercise the modified code (check `server/service/integration_*_test.go` files)\n3. Any test helpers or fixtures that may need updating\n\nList the test files and suggest specific test functions to run with the exact `go test` commands, including the right env vars (MYSQL_TEST, REDIS_TEST, etc.).\n","frontmatter":{"name":"find-related-tests","description":"Find test files and functions related to recent git changes. Suggests exact go test commands with correct env vars.","allowed-tools":"Bash(git *), Read, Grep, Glob","effort":"low","allowedTools":["Bash(git","*),","Read,","Grep,","Glob"]},"allowedTools":["Bash(git","*),","Read,","Grep,","Glob"],"isInternal":false,"tokens":168,"sizeBytes":715},{"name":"SKILL.md","path":".claude/skills/fix-ci/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fix-ci/SKILL.md","title":"fix-ci","category":"anthropic-skill","format":"markdown","content":"---\nname: fix-ci\ndescription: Diagnose and fix failing CI tests from a GitHub Actions run. Use when asked to \"fix CI\", \"CI failure\", or \"failing tests in CI\".\nallowed-tools: Bash(gh *), Bash(go test *), Bash(go build *), Bash(MYSQL_TEST*), Bash(MYSQL_TEST=1 REDIS_TEST=1 *), Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1 *), Read, Grep, Glob, Edit\nmodel: opus\neffort: high\n---\n\nFix failing tests from a CI run. The argument is a GitHub Actions run URL or run ID: $ARGUMENTS\n\n## Step 1: Identify failing jobs\n\nExtract the run ID from the URL (the numeric path segment after `/runs/`). Use `gh run view <run_id>` to list the jobs, then find the failing ones:\n\n```\ngh run view <run_id> --json jobs --jq '.jobs[] | select(.conclusion == \"failure\") | {name: .name, id: .databaseId}'\n```\n\nGroup the failing jobs by **test suite** (the first parenthesized token in the job name, e.g. `integration-core`, `integration-enterprise`, `service`, `mysql`, `main`). You only need to examine **one job per unique suite** since the matrix variants (OS, MySQL version) run the same tests.\n\n## Step 2: Find the failing tests in each suite\n\nFor each unique suite, fetch the job log and find the `FAIL: ` lines. IMPORTANT: use `gh api` (not `gh run view --log`, which may return empty):\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: ' | head -30\n```\n\nThis gives you the failing test function names and subtests. Ignore the parent test if subtests are listed (e.g. if `TestFoo` and `TestFoo/Bar` both appear, focus on `TestFoo/Bar`).\n\n## Step 3: Get error details\n\nFor each suite, fetch the error traces:\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: \\|Error Trace\\|Error:\\|expected:\\|actual:' | head -60\n```\n\nThis tells you the exact file/line and what the assertion expected vs. what it got.\n\n## Step 4: Diagnose each failure\n\nFor each failing test, read the test code at the indicated file and line. Determine whether the failure is:\n\n**A) A stale test assertion** — the test expects an old string/value but the production code was intentionally changed. The test needs updating to match the new behavior. Signs:\n- The expected value is an old error message string and the actual value is a new one\n- The change aligns with the intent of the current branch's modifications\n- The production code change looks intentional\n\n**B) A legitimate test failure** — the test is correct but the code under test is buggy. The production code needs fixing. Signs:\n- The test's expected value matches the documented/intended behavior\n- The actual value indicates a regression or bug\n- The test was not related to any intentional change on this branch\n\n## Step 5: Fix stale assertions (category A)\n\nFor each stale assertion:\n1. Read the test file\n2. Update the assertion to match the new expected value\n3. Also search for **other assertions in the same file** that check similar strings — CI only catches the first failure per test, so there may be additional stale assertions that haven't failed yet. Use Grep to find them.\n4. Also check for **related assertions in other test files** for the same error message pattern\n\n## Step 6: Report legitimate failures (category B)\n\nFor each legitimate failure, report to the user:\n- The test name and file location\n- What the test expects vs. what it got\n- Your analysis of why the production code is producing the wrong result\n- The production code file/line that likely needs fixing\n\nDo NOT fix production code bugs without user approval — only report them.\n\n## Step 7: Verify fixes\n\nAfter fixing stale assertions, run the affected tests locally to verify they pass:\n\n- `pkg/spec/...` and `server/fleet/...`: `go test -run 'TestName' ./pkg/spec/...`\n- `server/service/...` (unit tests like devices_test.go, scripts_test.go): `go test -run 'TestName' ./server/service/`\n- `ee/server/service/...`: `go test -run 'TestName' ./ee/server/service/`\n- `server/datastore/mysql/...`: `MYSQL_TEST=1 go test -run 'TestName' ./server/datastore/mysql/`\n- Integration tests (`integration_core_test.go`, `integration_enterprise_test.go`, `integration_live_queries_test.go`): these require `MYSQL_TEST=1 REDIS_TEST=1` and take a long time, so just verify compilation with `go build ./...`\n\nAfter running tests, also do a proactive Grep scan for any remaining old assertion strings in test files that might break in CI even though they didn't show up in this run (CI stops at the first failure per test function).\n\n## Step 8: Report summary\n\nPresent a summary to the user:\n- Total failing suites and tests found\n- How many were stale assertions (fixed) vs. legitimate failures (reported)\n- List of files modified\n- Any remaining concerns or tests that couldn't be verified locally\n","frontmatter":{"name":"fix-ci","description":"Diagnose and fix failing CI tests from a GitHub Actions run. Use when asked to \"fix CI\", \"CI failure\", or \"failing tests in CI\".","allowed-tools":"Bash(gh *), Bash(go test *), Bash(go build *), Bash(MYSQL_TEST*), Bash(MYSQL_TEST=1 REDIS_TEST=1 *), Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1 *), Read, Grep, Glob, Edit","model":"opus","effort":"high","allowedTools":["Bash(gh","*),","Bash(go","test","*),","Bash(go","build","*),","Bash(MYSQL_TEST*),","Bash(MYSQL_TEST=1","REDIS_TEST=1","*),","Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1","*),","Read,","Grep,","Glob,","Edit"]},"allowedTools":["Bash(gh","*),","Bash(go","test","*),","Bash(go","build","*),","Bash(MYSQL_TEST*),","Bash(MYSQL_TEST=1","REDIS_TEST=1","*),","Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1","*),","Read,","Grep,","Glob,","Edit"],"isInternal":false,"tokens":1174,"sizeBytes":4750},{"name":"SKILL.md","path":".claude/skills/fix-sql-parser/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fix-sql-parser/SKILL.md","title":"fix-sql-parser","category":"anthropic-skill","format":"markdown","content":"---\nname: fix-sql-parser\ndescription: Fix the osquery SQL parser when it rejects a valid query (or accepts an invalid one). Use when a query is flagged as invalid in the query editor but runs fine in osquery, when asked to \"fix the SQL parser\", \"fix the grammar\", \"this query is valid but Fleet says syntax error\", or when a corpus knownFailure needs closing.\nallowed-tools: Bash(yarn *), Bash(npx *), Bash(sqlite3 *), Bash(make generate-osquery-sql-parser), Bash(node *), Bash(git diff*), Bash(git status*), Read, Edit, Grep, Glob\neffort: high\n---\n\n# Fix an osquery SQL parser bug\n\nQuery to fix: $ARGUMENTS\n\nThe parser lives in `frontend/utilities/osquery_sql_parser/`. Read that\ndirectory's `README.md` first — it is the source of truth for this workflow and\nfor what the grammar deliberately excludes. This skill is the executable\nversion of its \"Making a change\" section.\n\n## First: is it actually a bug?\n\nDo not skip this. Three things are rejected **on purpose**, and \"fixing\" them\nwould undo deliberate decisions:\n\n1. **Non-SELECT statements.** osquery is read-only. `INSERT`, `UPDATE`,\n   `DELETE`, `CREATE`, `DROP`, `ALTER`, `ATTACH`, `PRAGMA`, `EXPLAIN`,\n   `BEGIN` are parse errors by design. Never re-add statement types to\n   `crud_stmt`.\n2. **Bind parameters** (`?`, `:name`, `@name`, `$name`). Valid SQLite, but\n   nothing in Fleet supplies bindings, so an unbound parameter silently matches\n   nothing. Rejecting them is intentional.\n3. **MySQL/Postgres dialect** osquery has no equivalent for: `FOR UPDATE`,\n   `INTERVAL`, `@@variables`, `RLIKE`, `FROM DUAL`, `#` comments, `@>` and\n   other jsonb operators, `COLLATE =`. See the README's Provenance section for\n   the full list.\n\nThen confirm the query is valid for the engine, using real SQLite:\n\n```bash\nsqlite3 :memory: \"<the query>\"\n```\n\nA syntax error here means **the query is wrong, not the grammar** — say so and\nstop. (Errors about missing tables are expected and fine; osquery's tables\ndon't exist in a bare sqlite3. Only syntax errors matter.)\n\nIf the query is valid SQLite and isn't in one of the three excluded categories,\nit is a real bug. Continue.\n\n## 1. Reproduce against the grammar\n\n```bash\nyarn --silent peggy -t \"<the query>\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs\n```\n\nThe `SyntaxError` it prints carries a `location` (line/column) and an\n`expected` list. Together these tell you which rule gave up and what it wanted\n— that is the rule to widen. Note the column and read the SQL at that offset;\nthe failure is usually one token past the construct the grammar can't handle.\n\n## 2. Add the failing case to `corpus.json` and watch it fail\n\n`frontend/utilities/osquery_sql_parser/corpus.json` is hand-maintained. Add:\n\n```json\n{\"name\": \"short description of the construct\", \"query\": \"<the query>\"}\n```\n\nNo `expect` field means \"must parse\". If you are instead fixing the opposite\nproblem — the parser accepts something it shouldn't — add\n`\"expect\": \"reject\"` and a `note` saying why.\n\n**If the query is already in the corpus as a `knownFailure`, delete its\n`knownFailure` and `expect` fields now, before touching the grammar.** Left\nalone, that entry asserts the gap still exists, so it passes until your fix\nlands and then fails — backwards. Removing the fields is what makes it red.\n\nNow run the tests and **confirm they fail, naming your entry**:\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser\n```\n\nYou should see `✕ parses every query expected to parse` with your entry's name\nin the reported array. A red test for the right reason before any grammar edit\nis what proves the fix actually did something. If it passes here, either the\nquery already parses or the entry is wrong — investigate before continuing.\n\n## 3. Edit the grammar\n\nEdit only `osquery_sql.pegjs`. **Never** edit\n`osquery_sql_parser.generated.js`; it is gitignored and rebuilt from the\ngrammar.\n\nRules read like BNF: `rule = alt1 / alt2 { action }`. Notes:\n\n- `'FOO'i` matches case-insensitively\n- `__` is optional whitespace/comments\n- alternation order matters — longest match first\n- action blocks build the AST, so the grammar doubles as AST documentation\n\nPrefer the smallest widening that fixes the case: add an alternative to the\nrule that failed, rather than restructuring. If your change alters the shape of\nan AST node, check whether `frontend/utilities/sql_tools.ts`'s visitor needs to\nlearn it — that file walks the AST to extract table names.\n\n## 4. Test\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser frontend/utilities/sql_tools.tests.ts frontend/components/forms/validators/validate_query\n```\n\n`yarn test` regenerates the parser first via the `pretest` hook, always through\nthe lockfile-pinned peggy. Invoking jest directly does not — if you do, run\n`make generate-osquery-sql-parser` first or you test a stale parser.\n\nYour new entry should now pass.\n\n## 5. Check you did not widen too far\n\nThis is the step that catches real mistakes. A loosened rule can start\naccepting dialect syntax the grammar deliberately rejects, and the corpus is\nthe guard: it holds ~57 `expect: \"reject\"` entries covering exactly that.\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser   # corpus: parse + reject + gaps\nnpx tsc --noEmit -p tsconfig.json\nyarn lint\n```\n\nThen spot-check the exclusions by hand — each of these must still be rejected:\n\n```bash\nfor q in \"INSERT INTO users (name) VALUES ('x')\" \"SELECT @@version\" \\\n         \"SELECT * FROM users FOR UPDATE\" \"SELECT 1 FROM users WHERE uid = ?\"; do\n  printf '%-45s ' \"$q\"\n  yarn --silent peggy -t \"$q\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs \\\n    >/dev/null 2>&1 && echo \"ACCEPTED - BUG, you widened too far\" || echo \"rejected (correct)\"\ndone\n```\n\nFinally, run the whole frontend suite, since `sql_tools` and the query\nvalidator feed several pages:\n\n```bash\nyarn test\n```\n\n## 6. Report\n\nTell the user:\n\n- the rule you changed and why that was the right one\n- the corpus entry you added\n- confirmation that the reject cases and full suite still pass\n\nCommit the grammar and `corpus.json` together. The generated parser is\ngitignored, so there is nothing else to commit. Do not add issue or PR numbers\nto comments in either file.\n\n## Rules\n\n- Verify against real `sqlite3` before changing the grammar. If SQLite rejects\n  the query, the query is the bug.\n- Red test first, always: corpus entry before grammar edit.\n- Only `osquery_sql.pegjs` is edited. The generated parser is never edited or\n  committed.\n- `crud_stmt` stays SELECT-only.\n- Do not delete or restructure unrelated rules while you are in there.\n- If the fix would require re-admitting a deliberate exclusion, stop and ask\n  rather than deciding for the user.\n","frontmatter":{"name":"fix-sql-parser","description":"Fix the osquery SQL parser when it rejects a valid query (or accepts an invalid one). Use when a query is flagged as invalid in the query editor but runs fine in osquery, when asked to \"fix the SQL parser\", \"fix the grammar\", \"this query is valid but Fleet says syntax error\", or when a corpus knownFailure needs closing.","allowed-tools":"Bash(yarn *), Bash(npx *), Bash(sqlite3 *), Bash(make generate-osquery-sql-parser), Bash(node *), Bash(git diff*), Bash(git status*), Read, Edit, Grep, Glob","effort":"high","allowedTools":["Bash(yarn","*),","Bash(npx","*),","Bash(sqlite3","*),","Bash(make","generate-osquery-sql-parser),","Bash(node","*),","Bash(git","diff*),","Bash(git","status*),","Read,","Edit,","Grep,","Glob"]},"allowedTools":["Bash(yarn","*),","Bash(npx","*),","Bash(sqlite3","*),","Bash(make","generate-osquery-sql-parser),","Bash(node","*),","Bash(git","diff*),","Bash(git","status*),","Read,","Edit,","Grep,","Glob"],"isInternal":false,"tokens":1676,"sizeBytes":6719},{"name":"article-template.md","path":".claude/skills/fleet-article-formatting/assets/article-template.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-article-formatting/assets/article-template.md","title":"Assets Skill","category":"anthropic-skill","format":"markdown","content":"# Assets Skill\n\nPath: `.claude/skills/fleet-article-formatting/assets/article-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-article-formatting/assets/article-template.md)","tokens":300,"sizeBytes":241},{"name":"SKILL.md","path":".claude/skills/fleet-article-formatting/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-article-formatting/SKILL.md","title":"fleet-article-formatting","category":"anthropic-skill","format":"markdown","content":"---\nname: fleet-article-formatting\ndescription: Apply Fleet's house article format and article-specific voice to Fleet ARTICLES — blog pieces with meta category \"articles\" or \"comparison\" (thought-leadership, how-to, and comparison pieces). Use when writing a NEW article or editing, refreshing, or tightening an EXISTING one, even if the user doesn't say \"use the format.\" Governs structure and article-specific voice; pair with content-style for word-level voice. Do NOT use for guides, case studies, or announcements — those are separate content types with their own skills.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet article formatting\n\nThis skill governs article **structure and article-specific voice** — the section order, the key-takeaways pattern, the CTAs, and the honest-claims guardrails — for drafting new articles and bringing older ones up to standard. For word-level voice (sentence case, em dashes, filler, Fleet terminology, positioning), run the `content-style` skill over the prose. Apply both together on every article.\n\nThe format does one job: let a busy reader get the whole argument from the top of the page, then keep reading for the proof. \"Key takeaways\" and the CTA button sit immediately after the dek — before the intro — so a reader who scrolls no further still leaves with the argument and a next step. Every rule below serves that.\n\n## Content types\n\nFleet publishes several content types under `articles/`. This skill governs the **article** format only. Identify the type first (the `<meta name=\"category\" ...>` value is the routing signal), then apply the matching format. The canonical list of valid `category` values lives in [`website/scripts/build-static-content.js`](../../../website/scripts/build-static-content.js) (`validArticleCategories`); a fuller per-type explainer is in [`content-style/references/content-types.md`](../content-style/references/content-types.md).\n\n| Content type | What it is | `category` value(s) | Format governed by |\n|---|---|---|---|\n| **Article** | Thought-leadership, how-to, and comparison pieces in the house format (title → dek → key takeaways → CTA → body → closing) | `articles`, `comparison` | **this skill** (+ `content-style` for prose) |\n| **Guide** | Step-by-step operational how-to | `guides` | `fleet-guide-formatting` |\n| **Case study** | Customer story; requires summary/quote meta tags | `case study` | `fleet-case-study-formatting` |\n| **Announcement** | Product/news announcement | `announcements` | `content-style` |\n| Release notes, podcasts, webinars, whitepapers, reports | Other content types | `releases`, `podcasts`, `webinar`, `whitepaper`, `report`, … | out of scope here |\n\n**Scope follows from this table:** apply this skill when the piece is an **Article** — `category` is `articles` *or* `comparison`. Both use the same format; `comparison` differs only in routing (it sets `category=comparison` and carries extra routing meta tags — see the website build requirements). For any other type, stop and use the owning skill; flag the mismatch to the author rather than reshaping their piece.\n\n## The structure\n\nUse this skeleton for Fleet articles — thought-leadership posts, how-to articles, and comparison pieces. Not every article needs every section, but the order is fixed.\n\n```\n# Title (sentence case)\n*Italic dek — one or two sentences.*\n\n## Key takeaways\n- **Bold lead-in.** One to three sentences, outcome-first. (5–6 bullets.)\n\n<a purpose=\"cta-button\" href=\"https://fleetdm.com/relevant-page\">Short action label</a>\n\n[Intro — keep it short (about two short paragraphs); it opens the body proper.]\n\n## [Body section]\n### [Subsection]\n...\n\n## [Closing section]\n[Short recap or stakes, then the through-line.]\n\n## See it live\n[Optional next-steps block: a guide link plus one or two demo/workshop bullets.]\n```\n\n### Title\n\nSentence case, not Title Case. Lead with the reader's outcome or the tension, not the product name. \"How Fleet completes your Microsoft stack\" reads better than \"Fleet: The Complete Microsoft Integration Platform.\"\n\n### Dek (the italic line under the title)\n\nOne or two sentences, italicized. It frames the question the piece answers or the payoff the reader gets — it does not summarize the whole article. Think of it as the reason to keep reading. If the piece has a meta description, the dek can be a sharper, more human version of it.\n\n### Key takeaways — the heart of the format\n\n- Place it immediately after the dek, before the intro and the first body section. Nothing but the title and dek comes before it — the reader gets the whole argument at the very top of the page.\n- 5–6 bullets. Each bullet: `**Bold lead-in phrase.**` followed by one to three sentences.\n- **Lead with the business outcome, not the feature.** The bold phrase should state what's true for the reader or what they get (\"Fleet sees it across every OS, in real time\"), and the sentences explain why it matters. Avoid bullets that just name a feature.\n- **Each takeaway previews a body section** — there should be a rough one-to-one mapping. If a takeaway has no home in the body, either cut it or add the section.\n- **Preview, don't echo.** Do not copy a full sentence verbatim from the body into a takeaway. Say the same idea in different words. If the reader sees the identical sentence twice within a few hundred words, the takeaway reads as padding.\n- **Takeaways must stand alone.** Because they now precede the intro, they can't lean on any setup — each bullet has to make sense to a reader who has read only the title and dek.\n\n**Example of a strong takeaway (outcome-first, previews a section):**\n> **Governance is code, not console clicks.** Reports and policies live in Git as YAML, get reviewed in a pull request, and deploy through CI, so your AI governance posture is auditable and reversible instead of a click someone made six months ago.\n\n**Weaker version (feature-first, no stakes):**\n> **GitOps support.** Fleet supports managing policies and reports as YAML in Git with CI/CD.\n\n### CTA button after the key takeaways\n\nPlace a single call-to-action button directly after the key takeaways list, before the intro.\n\n- **Syntax:** `<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">Short action label</a>` — an established pattern that renders as Fleet's primary (green) button in the article body. Use a full `https://fleetdm.com/…` URL, as existing articles do.\n- **Make it relevant to the piece.** Match label and destination to the argument: \"See config-as-code in Fleet\" → `/infrastructure-as-code` for a config-as-code post, \"Compare features\" → `/pricing` for a comparison, \"Get a demo\" → `/contact` as the default.\n- **One button only.** The fuller menu of next steps belongs in the closing CTA, not here. If the closing block also offers \"Get a demo,\" vary the top button so the two CTAs aren't identical.\n\n### Intro\n\nThe intro comes **after** the CTA button and opens the body proper. Keep it short — aim for about two short paragraphs. It can be narrative (\"I've spent the last few months talking with teams…\") or direct (\"Your organization runs on Microsoft.\"), but it should end on a bridge that hands the reader into the first body section — a question, a stakes statement, or a \"here's where the answer lives\" line.\n\nBecause the takeaways have already summarized the argument, the intro doesn't need to — its job is to set up the problem and pull the still-reading reader into the body. If it runs past two paragraphs, fold the setup together and cut. Don't restate the takeaways in prose; that reads as padding coming right after them.\n\n### Body\n\n`##` for sections, `###` for subsections, all sentence case. Lead each section with its point, then support it. Use concrete, grounded specifics (real version numbers, real table names, real CVE-feed names) wherever you have them — specificity is what separates Fleet content from generic vendor copy.\n\nFor **integration or comparison pieces**, the cooperative \"Fleet + X\" section framing works well (e.g. \"Fleet + Microsoft Intune,\" \"Fleet + your SIEM\"): name the other tool, give it genuine credit for what it does well, then show precisely where Fleet adds depth. This reads as confident rather than defensive. (Thought-leadership and how-to pieces don't need this framing — use plain topic headers.)\n\n### Closing\n\nA short section that restates the stakes (\"The risk of waiting is real\") and lands the through-line. Do **not** re-list every key takeaway here — that's the most common bloat. One or two synthesizing sentences, then the closing line.\n\n### CTA\n\nFleet pieces typically carry two calls to action, and they play different roles:\n\n- **The post-takeaways button** (above) — one button, high on the page, for the reader who's already convinced.\n- **The closing CTA** — at the foot of the article, a fuller menu of next steps. This is a short \"See it live\" block (a guide link plus one or two bullets such as **Get a demo** → `/contact` and **Join a GitOps training session** → `/gitops-workshop`). Keep it to the actions that genuinely fit the piece; real links only. Don't add a horizontal rule or a trailing italic CTA line after it — the website renders its own divider below the article.\n\n### Endmatter\n\nEvery article ends with the `<meta>` block from [`content-style/references/content-types.md`](../content-style/references/content-types.md). Emit it as part of the draft; `assets/article-template.md` already carries it. Two fields need care:\n\n- `articleTitle` matches the H1 exactly, character for character.\n- **`description` must be 150 characters or fewer.** This is enforced by the website build, not a style preference: `website/scripts/build-static-content.js` throws `An article page has an invalid description meta tag` and fails the whole production build for any article over the limit. It applies to every content type that uses this endmatter, articles and comparisons included. Count the characters rather than eyeballing it, since a description that reads like one or two sentences lands near 150 more often than you'd expect. Trim words, don't drop the substance.\n\nNever fabricate `authorFullName`, `authorGitHubUsername`, or `publishedOn`. If you don't have them, leave the placeholders and tell the author which fields to fill in.\n\n## Voice and terminology\n\nFleet's voice is confident, specific, and honest. It respects the reader's intelligence and never oversells.\n\n### Terminology rules\n\n- **Say \"Fleet's agent\" or \"fleetd,\" not \"osquery,\"** in marketing and customer-facing content. \"Queryable,\" \"query,\" and \"live query\" are fine as descriptors; in product-facing CTAs Fleet often prefers \"report.\" Don't expose raw upstream project names where \"Fleet's agent\" reads cleaner.\n- **Sentence case** for all headings and for credential/product names (\"Certified Fleet expert,\" not \"Certified Fleet Expert\").\n- Name competitors and other tools plainly and fairly — no scare quotes, no snark. The argument should win on substance.\n\n### Honest-claims guardrails\n\nFleet content earns trust by being accurate. This is non-negotiable and applies whether drafting or editing.\n\n- **Never invent an integration, capability, or parity claim.** If you're not certain Fleet does something, don't assert it. Verify against Fleet's docs (fleetdm.com), the changelog, or ask the author.\n- **Hedge where the truth is partial.** Prefer \"tends to wave it through\" over \"is completely blind to\"; prefer \"you can pipe Fleet data into Sentinel via your existing pipeline\" over implying a turnkey native connector that may not exist. Accurate-but-modest beats impressive-but-wrong every time.\n- **Ground specifics.** Tie capability claims to real versions/features when you can (\"landed for macOS in Fleet 4.70.0, extended to Windows in 4.84.0\"). Flag any claim you couldn't verify so a human can check it before publishing.\n- Cross-platform coverage (macOS, Windows, Linux, and beyond) is usually Fleet's strongest differentiator — surface it, but only where it's genuinely relevant to the point.\n\n### Formatting restraint\n\nDefault to prose. Use bullets and tables only where a list genuinely earns its place — enumerations (e.g. a fixed checklist you're contrasting against), step sequences, code, or scannable reference. Don't bullet a narrative. Don't bold half the sentence. The key takeaways are the one section that's intentionally list-heavy; the body should breathe.\n\n### De-duplication\n\nEach distinct point gets one primary home. A claim that appears five times across a piece loses force and bloats length. The takeaways preview the body, but beyond that, if you find the same idea stated in two sections, keep it in the stronger one and cut or cross-reference the other. When a point legitimately belongs in two places (takeaway + body), vary the wording so it reads as deliberate, not duplicated.\n\n## Workflow: writing a new piece\n\n1. Confirm the piece is an **article** (not a case study, announcement, or guide) and pin down the article type (thought-leadership, how-to, or comparison) and the single main argument.\n2. Draft the body sections first — that's where the substance is. Ground every claim; flag anything unverified.\n3. Write the dek and the intro. Keep the intro to about two short paragraphs; it opens the body, so end it on a bridge into the first section.\n4. Derive the **key takeaways** from the finished body: one outcome-first bullet per major section, 5–6 total, previewing without echoing. Place them immediately after the dek, before the intro — each bullet must stand alone with no setup.\n5. Add the **post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label and destination relevant to the piece.\n6. Write the closing and the closing CTA.\n7. Run the `content-style` skill over the whole draft for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: updating and enhancing existing content\n\nUse this to bring older Fleet content up to the current format. Work through it in order.\n\n1. **Confirm it's an article.** Check the `<meta name=\"category\" ...>` value against the Content types table. If it's `articles` or `comparison`, proceed. Otherwise stop — this format doesn't apply; tell the author rather than reshaping their piece.\n2. **Read the whole piece** and identify its main argument and its natural section breaks.\n3. **Add a dek** if there isn't one — an italic one-or-two-sentence framing under the title.\n4. **Insert a \"Key takeaways\" section** immediately after the dek, before the intro. Derive 5–6 outcome-first bullets, roughly one per major section. Make them preview the body without copying sentences out of it, and make sure each stands alone — the reader hasn't seen the intro yet.\n5. **Add the post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label/destination relevant to the piece.\n6. **Tighten the intro** to about two short paragraphs. It now follows the CTA button and opens the body, so it should set up the problem and bridge into the first section — not restate the takeaways.\n7. **Sweep terminology**: replace \"osquery\" with \"Fleet's agent\"/\"fleetd\" in prose, fix Title Case headings to sentence case, fix capitalized credential/product names.\n8. **De-duplicate**: find claims repeated across sections and keep each in its strongest single home.\n9. **Verify claims**: check every capability/integration/parity statement against Fleet's docs or the changelog. Soften or correct anything unsupported; flag anything you can't confirm for the author.\n10. **Trim over-formatting**: convert bullet-soup back to prose where a list isn't earning its place; reduce stray bolding.\n11. **Preserve structural metadata** (meta tags, author fields, frontmatter, existing links) exactly — don't drop them in the rewrite.\n12. **Run the `content-style` skill** over the revised prose — it owns the voice, sentence case, em-dash, filler, and terminology rules referenced in the steps above; let it be the final word on word-level style.\n13. Run the self-check below, then summarize the changes you made and list any claims you flagged for human verification.\n\n## Self-check before finishing\n\n- Title is sentence case and outcome-led; there's an italic dek that frames rather than summarizes.\n- \"Key takeaways\" sits immediately after the dek, before the intro: 5–6 outcome-first bullets, each previewing a section, each standing alone, none echoing a body sentence verbatim.\n- A single CTA button follows the key takeaways and precedes the intro, with a label and destination relevant to the piece.\n- The intro is short (about two short paragraphs), doesn't restate the takeaways, and ends on a bridge into the first body section.\n- Body sections lead with their point and use grounded specifics; comparison pieces credit the other tool before adding depth.\n- No \"osquery\" in customer-facing prose; headings and credential names are sentence case.\n- Every capability claim is true and grounded; partial truths are hedged; unverified claims are flagged.\n- No idea is repeated across sections without a reason; formatting is restrained outside the takeaways.\n- Closing lands the through-line without re-listing the takeaways; the top button and closing CTA aren't identical, and all links are real.\n- Endmatter is present, `articleTitle` matches the H1 exactly, and `description` is 150 characters or fewer (counted, not estimated). Author and date are real or flagged, never invented.\n- The `content-style` skill has been run over the prose, and its voice, grammar, and terminology guidance is satisfied.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/article-template.md`. Start new articles from it when helpful.\n","frontmatter":{"name":"fleet-article-formatting","description":"Apply Fleet's house article format and article-specific voice to Fleet ARTICLES — blog pieces with meta category \"articles\" or \"comparison\" (thought-leadership, how-to, and comparison pieces). Use when writing a NEW article or editing, refreshing, or tightening an EXISTING one, even if the user doesn't say \"use the format.\" Governs structure and article-specific voice; pair with content-style for word-level voice. Do NOT use for guides, case studies, or announcements — those are separate content types with their own skills.","allowed-tools":"Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)","effort":"medium","allowedTools":["Read,","Grep,","Glob,","Edit,","Write,","Bash(git","diff*),","Bash(git","status*)"]},"allowedTools":["Read,","Grep,","Glob,","Edit,","Write,","Bash(git","diff*),","Bash(git","status*)"],"isInternal":false,"tokens":4045,"sizeBytes":18016},{"name":"case-study-template.md","path":".claude/skills/fleet-case-study-formatting/assets/case-study-template.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/assets/case-study-template.md","title":"Assets Skill","category":"anthropic-skill","format":"markdown","content":"# Assets Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/assets/case-study-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/assets/case-study-template.md)","tokens":300,"sizeBytes":253},{"name":"canonical-examples.md","path":".claude/skills/fleet-case-study-formatting/references/canonical-examples.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/references/canonical-examples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/references/canonical-examples.md)","tokens":300,"sizeBytes":263},{"name":"SKILL.md","path":".claude/skills/fleet-case-study-formatting/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/SKILL.md","title":"fleet-case-study-formatting","category":"anthropic-skill","format":"markdown","content":"---\nname: fleet-case-study-formatting\ndescription: Apply Fleet's house format, voice, and required meta tags to Fleet CASE STUDIES — customer success stories published under `<meta name=\"category\" value=\"case study\">`. Use when drafting a new case study from a customer interview/quotes, or editing, tightening, or auditing an existing one, even if the user doesn't say \"case study\" (triggers: \"customer story\", \"success story\", \"write up [Company]'s Fleet migration\", \"case study for X\", a request built from call notes/quotes about a customer's experience with Fleet). Governs the challenge → choosing Fleet → results structure, the `attribution-quote` and `checklist` custom divs, the case-study-specific endmatter (summaryChallenge/summarySolution/summaryKeyResults, company/quote meta tags) the website build enforces, and the non-negotiable rule that every quote is verbatim and every number is customer-sourced. Pair with content-style for word-level voice. Do NOT use for articles, guides, or announcements — those are separate content types with their own skills, even when they also tell a customer story.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet case study formatting\n\nA Fleet case study exists to let a skeptical prospect hear, in a real customer's own words, that switching to Fleet solved a specific problem. It is not an article, and it is not marketing copy dressed up with a logo — it's a structured, quote-driven narrative that the website renders into a dedicated template with a sidebar summary, a company card, and a hero pull-quote. This skill governs that **structure, custom syntax, and required meta tags**; pair it with `content-style` for word-level voice (sentence case, no em dashes, no filler, no hype).\n\n## Scope — when this skill applies\n\nApplies to pieces published under `<meta name=\"category\" value=\"case study\">` — a customer's story of adopting Fleet, told in three acts (their problem, why they chose Fleet, what changed) and anchored by real attributed quotes.\n\nDoes **not** apply to:\n\n- **Articles** (`category` = `articles` or `comparison`) — thought-leadership, how-to, comparison pieces. Use `fleet-article-formatting`.\n- **Guides** (`category` = `guides`) — step-by-step procedures. Use `fleet-guide-formatting`.\n- **Announcements** (`category` = `announcements`) — even when they narrate a customer's experience. `articles/deputy-achieves-compliance-and-clarity-with-fleet.md` is a real example: it reads like a case study but is tagged `announcements` and skips the case-study meta tags entirely. If a customer-story draft doesn't have (or won't have) the summary/quote/company meta tags below, it's probably meant to be an announcement or article, not a case study — ask rather than forcing this template on it.\n\nBefore applying this format, check the `<meta name=\"category\" ...>` value, or ask which type the piece is destined for.\n\n## Canonical examples\n\nRead one or two before writing a new case study — `articles/fastly.md`, `articles/stripe.md`, `articles/thumbtack.md`, `articles/mollie.md`, `articles/faire.md`, `articles/foursquare.md`, `articles/primo.md`. All follow the same skeleton with different section names suited to each story. See `references/canonical-examples.md` for a structural breakdown of each one.\n\n## The structure\n\n```\n# Title (sentence case, names the company and the outcome)\n\n## [Challenge section: \"The Challenge\" / \"Why [Company] needed a change\" / \"The search for a solution\"]\n[Narrative: the old tool/process, the pain, why it became untenable.]\n\n<div purpose=\"attribution-quote\">\n\n*Verbatim quote about the pain.*\n\n**Speaker name**\n\nTitle, Company\n</div>\n\n## [Decision section: \"Choosing Fleet\" / \"Why Fleet\" / \"The search for a solution\"]\n[Narrative: evaluation criteria, why Fleet won, how the switch went.]\n\n<div purpose=\"checklist\">        <!-- optional, for evaluation criteria or a short outcome list -->\n\nFirst criterion or result\n\nSecond criterion or result\n</div>\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Results section: \"The results\" / \"The outcome\"]\n[Narrative: quantified outcomes, what's different now.]\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Optional closing: \"Looking ahead\" / \"The future\"]\n[What's next for the partnership — a plan, an expansion, a platform they're evaluating next.]\n\n<meta name=\"category\" value=\"case study\">\n<meta name=\"articleTitle\" value=\"...\">\n<meta name=\"description\" value=\"...\">\n\n<meta name=\"publishedOn\" value=\"YYYY-MM-DD\">\n<meta name=\"authorGitHubUsername\" value=\"n/a\">\n<meta name=\"authorFullName\" value=\"Fleetdm\">\n\n<meta name=\"companyLogoFilename\" value=\"...\">\n<meta name=\"quoteAuthorImageFilename\" value=\"...\">\n<meta name=\"quoteAuthorName\" value=\"...\">\n<meta name=\"quoteAuthorJobTitle\" value=\"...\">\n<meta name=\"quoteContent\" value=\"...\">\n\n<meta name=\"companyName\" value=\"...\">\n<meta name=\"companyInfo\" value=\"...\">\n<meta name=\"companyInfoLineTwo\" value=\"...\">    <!-- optional -->\n\n<meta name=\"summaryChallenge\" value=\"...\">\n<meta name=\"summarySolution\" value=\"...\">\n<meta name=\"summaryKeyResults\" value=\"...; ...; ...\">\n```\n\n### Title\n\nSentence case (except the company name, which keeps its own capitalization). Names the company and states the outcome, not the feature: \"Fastly gains visibility into all endpoints and critical infrastructure worldwide,\" \"Stripe moved 10,000 Macs to Fleet, saving hundreds of thousands annually,\" \"Thumbtack migrates more than 90% of Macs with no IT intervention.\" \"How [Company] ...\" also works when the story is about a mechanism (\"How Mollie manages endpoint compliance the same way it ships software,\" \"How Primo built an HR-driven IT platform, powered by Fleet\").\n\n### The three-act narrative\n\nEvery canonical example is some variation of this arc, even though section headings differ story to story — pick headings that fit the story rather than copying one example's exact wording:\n\n1. **The problem.** What the customer used before (or the process they had), why it broke down, and the cost of that (wasted time, risk, a specific incident, slow vendor support). Ground it in specifics: real tool names, real numbers of devices, a real incident (Thumbtack's mis-set nudge-profile date; Stripe's fragmented API workarounds).\n2. **Choosing Fleet.** What they evaluated against (sometimes an explicit checklist of criteria), and why Fleet won. Tie each reason back to a capability, not a vague endorsement: API-first architecture enabling GitOps, open-source code enabling self-hosting or auditability, cross-platform coverage, responsive Slack-based support.\n3. **The results.** Quantified, concrete outcomes: migration speed and percentage, cost/licensing savings, headcount or ticket-volume effects, new capabilities unlocked. This is where a `checklist` div listing bullet-style results is most common.\n\nAn optional fourth section (\"Looking ahead,\" \"The future\") closes with what's next — expanded platform coverage, a deepening partnership, a new use case. Not every case study needs one; several of the canonical examples fold this into the results section instead.\n\n### Custom syntax\n\nTwo custom `<div purpose=\"...\">` blocks, unique to case studies (and rarely used elsewhere) — get them exactly right, the build pipeline and stylesheet depend on them:\n\n**`attribution-quote`** — a pull quote inside the body, attributed to a named speaker:\n\n```\n<div purpose=\"attribution-quote\">\n\n*Italicized verbatim quote, exactly as the customer said it.*\n\n**Speaker Name**\n\nTitle, Company\n</div>\n```\n\n- The quote line is italic (`*...*`), the name is bold (`**...**`), the title/company line is plain text. Blank lines between each are required for the markdown to render correctly.\n- Title and company can be one line (`Sr Manager Systems Engineering, Fastly`) or, when the company is already obvious from context, just the title.\n- Use 2-4 of these per case study, spaced through the narrative at the moments they land hardest — right after describing the pain, right after the \"why Fleet\" reasoning, and in the results section. Don't front-load them all in one place.\n\n**`checklist`** — a plain list of short items with no markdown bullet syntax, rendered as a checklist by the stylesheet:\n\n```\n<div purpose=\"checklist\">\n\nFirst item — a criterion, a feature, or a quantified result\n\nSecond item\n\nThird item\n</div>\n```\n\n- Items are separated by blank lines, not `-` or `*` bullets — the div's CSS supplies the checkmark styling.\n- Use it for evaluation criteria (Faire's three MDM-selection priorities) or a short, punchy results list (Foursquare's cost/time savings). Longer results lists (4+ items with more explanation) can also work as plain markdown bullets in the results section prose, as Thumbtack's and Primo's \"With Fleet, [Company] has:\" lists do — either is fine, pick whichever reads cleaner for the story.\n\n### Voice and honesty guardrails — stricter than other content types\n\nCase studies carry more risk than an article: every claim is attributed to a real person at a real company, and it gets fact-checked by that company before or after publishing.\n\n- **Quotes are verbatim, never paraphrased or invented.** If you don't have the customer's exact words for a moment the story needs, write the narrative around it without a quote, or flag it for the author to source a real quote. Do not manufacture a plausible-sounding quote and attribute it to a named person.\n- **Numbers come from the customer, not from you.** Migration percentages, device counts, cost savings, timeframes — these all must trace back to what the customer or the Fleet team working with them actually said. Flag any number you're inferring rather than quoting/sourcing directly.\n- **Name Fleet's own team members' contributions honestly** (e.g., a CSM's role in a migration) only if that's part of the customer's account, not invented color.\n- Otherwise, the standard `content-style` rules apply in full: sentence case headings, no em dashes, no hyperbole (\"revolutionary,\" \"seamless,\" \"game-changing\"), Oxford commas, active voice. Case study prose reads slightly more narrative/conversational than a guide, closer to an article, but it's still restrained — let the customer's own quotes carry the enthusiasm; the narrator's voice around them stays measured and factual.\n\n### Endmatter — case-study-specific meta tags (build-enforced)\n\nBeyond the standard article endmatter (`articleTitle`, `description`, `publishedOn`, `authorFullName`, `authorGitHubUsername`, `category`), the website's markdown build (`website/scripts/build-static-content.js`) requires additional tags for `category: case study` pages, and will fail the build if they're missing:\n\n- **`summaryChallenge`, `summarySolution`, `summaryKeyResults`** — required. These populate the sidebar \"Challenge / Solution / Key results\" summary box on the case study page (`website/views/pages/articles/case-study.ejs`). `summaryKeyResults` **must** be a semicolon-separated list (`\"Result one; Result two; Result three\"`) — a single sentence with no semicolon fails the build.\n- **`companyLogoFilename`** — if present, must reference a file that actually exists in `website/assets/images/`. The build checks this and errors if the file is missing.\n- **`quoteContent`** (the hero pull-quote at the top of the page) — if present, requires `quoteAuthorName`, `quoteAuthorJobTitle`, and `quoteAuthorImageFilename` alongside it, and the image file must exist in `website/assets/images/`.\n- **`companyName`, `companyInfo`** (and optional `companyInfoLineTwo`) — power the \"About [Company]\" sidebar/mobile block. Not build-enforced, but expected by the template; include them.\n\n**Image assets are a hard dependency, not something this skill can produce.** Before the build will succeed, someone needs to add the actual logo and headshot files to `website/assets/images/`, following the site's naming convention (`{descriptor}-{css-width}x{css-height}@2x.{ext}`, e.g. `fastly-logo-104x40@2x.png`, `dan-jackson-120x120@2x.png`). If those files don't exist yet, say so explicitly rather than writing `<meta>` tags that point at nothing — that's a silent build break waiting to happen.\n\nAn escape hatch exists (`<meta name=\"useBasicArticleTemplate\" value=\"true\">`) for a case study that should render with the plain article template instead of the sidebar layout; it then requires `cardTitleForCustomersPage` instead of the summary/quote/company tags. This is rare — only reach for it if the author specifically doesn't want the sidebar template.\n\n### Related, optional step: testimonials.yml\n\nMany (not all) published case studies also get their pull-quote added as an entry in `handbook/company/testimonials.yml`, which feeds the `<scrollable-tweets>` carousel used across the site (e.g., the `/customers` page). This is a nice-to-have, not build-enforced, and outside this skill's core job — mention it to the author as a follow-up rather than doing it unprompted, since it touches a shared file curated by the marketing team.\n\n## Workflow: writing a new case study\n\n1. Confirm you have real material to draw from — customer quotes (verbatim, attributed), and concrete numbers (device counts, migration timelines, cost figures). If working from raw interview notes or a call transcript, extract the quotes and facts before drafting; don't smooth a real quote into different words.\n2. Identify the three-act shape for this specific story: what was broken, why Fleet, what changed. Pick section headings that fit the story (see canonical examples) rather than reusing one example's headings verbatim.\n3. Draft the body: problem → decision → results, threading 2-4 `attribution-quote` divs at the moments they land, and a `checklist` div for evaluation criteria and/or headline results if the story has a natural short list.\n4. Write the title (sentence case, names the company and the outcome).\n5. Write the full endmatter block: standard article tags, then the case-study-specific summary/quote/company tags. Derive `summaryChallenge`/`summarySolution` as tight paraphrases of the body's first two acts; derive `summaryKeyResults` from the results section, semicolon-separated.\n6. Confirm image assets (`companyLogoFilename`, `quoteAuthorImageFilename`) exist in `website/assets/images/`, or flag that they still need to be added.\n7. Run the `content-style` skill over the prose for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: auditing or editing an existing case study\n\n1. Confirm it's tagged `category: case study`. If it's an `announcements` piece narrating a customer story (like the Deputy example), don't force this structure onto it — flag the mismatch instead.\n2. Read the whole piece and check the three-act shape is intact: problem, decision, results, each grounded in specifics rather than generic praise.\n3. Check every quote reads as something a person would actually say (specific, occasionally imperfect phrasing) rather than smoothed marketing copy — that's often a sign a quote was paraphrased rather than transcribed. Flag for the author to verify against the source if uncertain.\n4. Check the `attribution-quote` and `checklist` divs are syntactically correct (blank lines between quote/name/title, no stray markdown bullets inside `checklist`).\n5. Verify the endmatter has all case-study-required tags and that `summaryKeyResults` is semicolon-separated.\n6. Verify referenced image files (`companyLogoFilename`, `quoteAuthorImageFilename`) actually exist in `website/assets/images/`.\n7. Run the `content-style` skill over the prose.\n8. Run the self-check below, then summarize changes and flag anything you couldn't verify (a number, a quote, a missing image asset).\n\n## Self-check before finishing\n\n- Title is sentence case, names the company, and states the outcome rather than a feature.\n- Body follows the problem → choosing Fleet → results arc, with section headings suited to this story.\n- 2-4 `attribution-quote` divs, correctly formatted (italic quote, blank line, bold name, blank line, title/company), spaced through the narrative rather than clustered.\n- Every quote is verbatim and attributed to a real, named person; no invented quotes.\n- Every number (migration %, timeframe, cost, device count) traces back to the customer or Fleet team, not an inference.\n- A `checklist` div (or a plain bullet list) surfaces the headline results.\n- Endmatter includes `summaryChallenge`, `summarySolution`, `summaryKeyResults` (semicolon-separated), and the company/quote meta tags — or, if using `useBasicArticleTemplate`, `cardTitleForCustomersPage` instead.\n- `companyLogoFilename` and `quoteAuthorImageFilename` reference image files that exist in `website/assets/images/`, or the author has been told they still need to add them.\n- No \"osquery\" in prose (say \"Fleet's agent\" or \"fleetd\"); headings sentence case; no em dashes, filler, or hyperbole.\n- The `content-style` skill has been run over the prose.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/case-study-template.md`. A structural breakdown of each canonical example lives at `references/canonical-examples.md`.\n","isInternal":false,"tokens":3844,"sizeBytes":17252},{"name":"profiles-android.md","path":".claude/skills/fleet-gitops/references/profiles-android.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-android.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-android.md)","tokens":300,"sizeBytes":229},{"name":"profiles-apple.md","path":".claude/skills/fleet-gitops/references/profiles-apple.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-apple.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-apple.md)","tokens":300,"sizeBytes":225},{"name":"profiles-windows.md","path":".claude/skills/fleet-gitops/references/profiles-windows.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-windows.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-windows.md)","tokens":300,"sizeBytes":229},{"name":"queries.md","path":".claude/skills/fleet-gitops/references/queries.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/queries.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/queries.md)","tokens":300,"sizeBytes":211},{"name":"software.md","path":".claude/skills/fleet-gitops/references/software.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/software.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/software.md)","tokens":300,"sizeBytes":213},{"name":"SKILL.md","path":".claude/skills/fleet-gitops/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/SKILL.md","title":"fleet-gitops","category":"anthropic-skill","format":"markdown","content":"# fleet-gitops\n\nPath: `.claude/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/SKILL.md)","tokens":300,"sizeBytes":181},{"name":"canonical-examples.md","path":".claude/skills/fleet-guide-formatting/references/canonical-examples.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/canonical-examples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-guide-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/canonical-examples.md)","tokens":300,"sizeBytes":253},{"name":"template.md","path":".claude/skills/fleet-guide-formatting/references/template.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/template.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/fleet-guide-formatting/references/template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/references/template.md)","tokens":300,"sizeBytes":233},{"name":"SKILL.md","path":".claude/skills/fleet-guide-formatting/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/SKILL.md","title":"fleet-guide-formatting","category":"anthropic-skill","format":"markdown","content":"# fleet-guide-formatting\n\nPath: `.claude/skills/fleet-guide-formatting/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-guide-formatting/SKILL.md)","tokens":300,"sizeBytes":211},{"name":"SKILL.md","path":".claude/skills/handbook-pr/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/SKILL.md","title":"handbook-pr","category":"anthropic-skill","format":"markdown","content":"# handbook-pr\n\nPath: `.claude/skills/handbook-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/SKILL.md)","tokens":300,"sizeBytes":178},{"name":"SKILL.md","path":".claude/skills/lint/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/lint/SKILL.md","title":"lint","category":"anthropic-skill","format":"markdown","content":"# lint\n\nPath: `.claude/skills/lint/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/lint/SKILL.md)","tokens":300,"sizeBytes":157},{"name":"SKILL.md","path":".claude/skills/new-endpoint/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-endpoint/SKILL.md","title":"new-endpoint","category":"anthropic-skill","format":"markdown","content":"# new-endpoint\n\nPath: `.claude/skills/new-endpoint/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-endpoint/SKILL.md)","tokens":300,"sizeBytes":181},{"name":"identity-verification.md","path":".claude/skills/new-fma/references/identity-verification.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/identity-verification.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/new-fma/references/identity-verification.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/identity-verification.md)","tokens":300,"sizeBytes":229},{"name":"queries.md","path":".claude/skills/new-fma/references/queries.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/queries.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/new-fma/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/queries.md)","tokens":300,"sizeBytes":201},{"name":"script-comments.md","path":".claude/skills/new-fma/references/script-comments.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/script-comments.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/new-fma/references/script-comments.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/script-comments.md)","tokens":300,"sizeBytes":217},{"name":"validator-failures.md","path":".claude/skills/new-fma/references/validator-failures.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/validator-failures.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/new-fma/references/validator-failures.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/validator-failures.md)","tokens":300,"sizeBytes":223},{"name":"windows-scripts.md","path":".claude/skills/new-fma/references/windows-scripts.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/windows-scripts.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.claude/skills/new-fma/references/windows-scripts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/references/windows-scripts.md)","tokens":300,"sizeBytes":217},{"name":"SKILL.md","path":".claude/skills/new-fma/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/SKILL.md","title":"new-fma","category":"anthropic-skill","format":"markdown","content":"# new-fma\n\nPath: `.claude/skills/new-fma/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/SKILL.md)","tokens":300,"sizeBytes":166},{"name":"SKILL.md","path":".claude/skills/new-migration/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-migration/SKILL.md","title":"new-migration","category":"anthropic-skill","format":"markdown","content":"# new-migration\n\nPath: `.claude/skills/new-migration/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-migration/SKILL.md)","tokens":300,"sizeBytes":184},{"name":"SKILL.md","path":".claude/skills/openspec-apply-change/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-apply-change/SKILL.md","title":"openspec-apply-change","category":"anthropic-skill","format":"markdown","content":"# openspec-apply-change\n\nPath: `.claude/skills/openspec-apply-change/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-apply-change/SKILL.md)","tokens":300,"sizeBytes":208},{"name":"SKILL.md","path":".claude/skills/openspec-archive-change/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-archive-change/SKILL.md","title":"openspec-archive-change","category":"anthropic-skill","format":"markdown","content":"# openspec-archive-change\n\nPath: `.claude/skills/openspec-archive-change/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-archive-change/SKILL.md)","tokens":300,"sizeBytes":214},{"name":"SKILL.md","path":".claude/skills/openspec-explore/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-explore/SKILL.md","title":"openspec-explore","category":"anthropic-skill","format":"markdown","content":"# openspec-explore\n\nPath: `.claude/skills/openspec-explore/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-explore/SKILL.md)","tokens":300,"sizeBytes":193},{"name":"SKILL.md","path":".claude/skills/openspec-propose/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-propose/SKILL.md","title":"openspec-propose","category":"anthropic-skill","format":"markdown","content":"# openspec-propose\n\nPath: `.claude/skills/openspec-propose/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/openspec-propose/SKILL.md)","tokens":300,"sizeBytes":193},{"name":"SKILL.md","path":".claude/skills/project/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/project/SKILL.md","title":"project","category":"anthropic-skill","format":"markdown","content":"# project\n\nPath: `.claude/skills/project/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/project/SKILL.md)","tokens":300,"sizeBytes":166},{"name":"SKILL.md","path":".claude/skills/push-reference-docs/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/push-reference-docs/SKILL.md","title":"push-reference-docs","category":"anthropic-skill","format":"markdown","content":"# push-reference-docs\n\nPath: `.claude/skills/push-reference-docs/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/push-reference-docs/SKILL.md)","tokens":300,"sizeBytes":202},{"name":"SKILL.md","path":".claude/skills/release-retro/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/release-retro/SKILL.md","title":"release-retro","category":"anthropic-skill","format":"markdown","content":"# release-retro\n\nPath: `.claude/skills/release-retro/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/release-retro/SKILL.md)","tokens":300,"sizeBytes":184},{"name":"SKILL.md","path":".claude/skills/review-pr/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/review-pr/SKILL.md","title":"review-pr","category":"anthropic-skill","format":"markdown","content":"# review-pr\n\nPath: `.claude/skills/review-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/review-pr/SKILL.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":".claude/skills/spec-story/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/README.md","title":"Spec-story Skill","category":"anthropic-skill","format":"markdown","content":"# Spec-story Skill\n\nPath: `.claude/skills/spec-story/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/README.md)","tokens":300,"sizeBytes":183},{"name":"SKILL.md","path":".claude/skills/spec-story/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/SKILL.md","title":"spec-story","category":"anthropic-skill","format":"markdown","content":"# spec-story\n\nPath: `.claude/skills/spec-story/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/spec-story/SKILL.md)","tokens":300,"sizeBytes":175},{"name":"SKILL.md","path":".claude/skills/test/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/test/SKILL.md","title":"test","category":"anthropic-skill","format":"markdown","content":"# test\n\nPath: `.claude/skills/test/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/test/SKILL.md)","tokens":300,"sizeBytes":157},{"name":"SKILL.md","path":".claude/skills/tier-modes/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/tier-modes/SKILL.md","title":"tier-modes","category":"anthropic-skill","format":"markdown","content":"# tier-modes\n\nPath: `.claude/skills/tier-modes/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/tier-modes/SKILL.md)","tokens":300,"sizeBytes":175},{"name":"SKILL.md","path":".claude/skills/vuln-triage/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/vuln-triage/SKILL.md","title":"vuln-triage","category":"anthropic-skill","format":"markdown","content":"# vuln-triage\n\nPath: `.claude/skills/vuln-triage/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/vuln-triage/SKILL.md)","tokens":300,"sizeBytes":178},{"name":"SKILL.md","path":".claude/skills/who-blocks-this-pr/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/who-blocks-this-pr/SKILL.md","title":"who-blocks-this-pr","category":"anthropic-skill","format":"markdown","content":"# who-blocks-this-pr\n\nPath: `.claude/skills/who-blocks-this-pr/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/who-blocks-this-pr/SKILL.md)","tokens":300,"sizeBytes":199},{"name":"profiles-android.md","path":"cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-android.md)","tokens":300,"sizeBytes":301},{"name":"profiles-apple.md","path":"cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-apple.md)","tokens":300,"sizeBytes":297},{"name":"profiles-windows.md","path":"cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/profiles-windows.md)","tokens":300,"sizeBytes":301},{"name":"queries.md","path":"cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/queries.md)","tokens":300,"sizeBytes":283},{"name":"software.md","path":"cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/references/software.md)","tokens":300,"sizeBytes":285},{"name":"SKILL.md","path":"cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md","title":"fleet-gitops","category":"anthropic-skill","format":"markdown","content":"# fleet-gitops\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.agents/skills/fleet-gitops/SKILL.md)","tokens":300,"sizeBytes":253},{"name":"SKILL.md","path":"cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md","title":"fleet-gitops","category":"anthropic-skill","format":"markdown","content":"# fleet-gitops\n\nPath: `cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/cmd/fleetctl/fleetctl/templates/new/.claude/skills/fleet-gitops/SKILL.md)","tokens":300,"sizeBytes":253},{"name":"package.json","path":"ee/tools/license/package.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/package.json","title":"License Skill","category":"anthropic-skill","format":"json","content":"# License Skill\n\nPath: `ee/tools/license/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/package.json)","tokens":300,"sizeBytes":168},{"name":"CHANGELOG.md","path":"ee/tools/puppet/fleetdm/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CHANGELOG.md","title":"Fleetdm Skill","category":"anthropic-skill","format":"markdown","content":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CHANGELOG.md)","tokens":300,"sizeBytes":182},{"name":"CONTRIBUTING.md","path":"ee/tools/puppet/fleetdm/CONTRIBUTING.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CONTRIBUTING.md","title":"Fleetdm Skill","category":"anthropic-skill","format":"markdown","content":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/CONTRIBUTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/CONTRIBUTING.md)","tokens":300,"sizeBytes":188},{"name":"common.yaml","path":"ee/tools/puppet/fleetdm/data/common.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/data/common.yaml","title":"Data Skill","category":"anthropic-skill","format":"yaml","content":"# Data Skill\n\nPath: `ee/tools/puppet/fleetdm/data/common.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/data/common.yaml)","tokens":300,"sizeBytes":187},{"name":"hiera.yaml","path":"ee/tools/puppet/fleetdm/hiera.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/hiera.yaml","title":"Fleetdm Skill","category":"anthropic-skill","format":"yaml","content":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/hiera.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/hiera.yaml)","tokens":300,"sizeBytes":178},{"name":"metadata.json","path":"ee/tools/puppet/fleetdm/metadata.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/metadata.json","title":"Fleetdm Skill","category":"anthropic-skill","format":"json","content":"# Fleetdm Skill\n\nPath: `ee/tools/puppet/fleetdm/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/metadata.json)","tokens":300,"sizeBytes":184},{"name":"hiera.yaml","path":"ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml","title":"Fixtures Skill","category":"anthropic-skill","format":"yaml","content":"# Fixtures Skill\n\nPath: `ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hiera.yaml)","tokens":300,"sizeBytes":207},{"name":"common.yaml","path":"ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml","title":"Hieradata Skill","category":"anthropic-skill","format":"yaml","content":"# Hieradata Skill\n\nPath: `ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/spec/fixtures/hieradata/common.yaml)","tokens":300,"sizeBytes":230},{"name":"profiling_process.md","path":"orbit/tools/windows/profiling_process.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/tools/windows/profiling_process.md","title":"Windows Skill","category":"anthropic-skill","format":"markdown","content":"# Windows Skill\n\nPath: `orbit/tools/windows/profiling_process.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/tools/windows/profiling_process.md)","tokens":300,"sizeBytes":190},{"name":"HOWTO.md","path":"server/vulnerabilities/nvd/tools/HOWTO.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/HOWTO.md","title":"Tools Skill","category":"anthropic-skill","format":"markdown","content":"# Tools Skill\n\nPath: `server/vulnerabilities/nvd/tools/HOWTO.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/HOWTO.md)","tokens":300,"sizeBytes":190},{"name":"custom-annotations.yaml","path":"tools/ci/helm-values/custom-annotations.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/custom-annotations.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/custom-annotations.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/custom-annotations.yaml)","tokens":300,"sizeBytes":202},{"name":"disable-fleet-tls.yaml","path":"tools/ci/helm-values/disable-fleet-tls.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/disable-fleet-tls.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/disable-fleet-tls.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/disable-fleet-tls.yaml)","tokens":300,"sizeBytes":200},{"name":"enable-cloudsql-proxy.yaml","path":"tools/ci/helm-values/enable-cloudsql-proxy.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-cloudsql-proxy.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/enable-cloudsql-proxy.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-cloudsql-proxy.yaml)","tokens":300,"sizeBytes":208},{"name":"enable-mysql-tls.yaml","path":"tools/ci/helm-values/enable-mysql-tls.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-mysql-tls.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/enable-mysql-tls.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/enable-mysql-tls.yaml)","tokens":300,"sizeBytes":198},{"name":"environments-scalar-values.yaml","path":"tools/ci/helm-values/environments-scalar-values.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/environments-scalar-values.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/environments-scalar-values.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/environments-scalar-values.yaml)","tokens":300,"sizeBytes":218},{"name":"logger-firehose-accesssid.yaml","path":"tools/ci/helm-values/logger-firehose-accesssid.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-accesssid.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-firehose-accesssid.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-accesssid.yaml)","tokens":300,"sizeBytes":216},{"name":"logger-firehose-sts.yaml","path":"tools/ci/helm-values/logger-firehose-sts.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-sts.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-firehose-sts.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-firehose-sts.yaml)","tokens":300,"sizeBytes":204},{"name":"logger-pubsub.yaml","path":"tools/ci/helm-values/logger-pubsub.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-pubsub.yaml","title":"Helm-values Skill","category":"anthropic-skill","format":"yaml","content":"# Helm-values Skill\n\nPath: `tools/ci/helm-values/logger-pubsub.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/ci/helm-values/logger-pubsub.yaml)","tokens":300,"sizeBytes":192},{"name":"tests.md","path":"tools/custom-package-parser/tests.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/tests.md","title":"Custom-package-parser Skill","category":"anthropic-skill","format":"markdown","content":"# Custom-package-parser Skill\n\nPath: `tools/custom-package-parser/tests.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/tests.md)","tokens":300,"sizeBytes":196},{"name":"package.json","path":"tools/fleet-slackbot/package.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/package.json","title":"Fleet-slackbot Skill","category":"anthropic-skill","format":"json","content":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/package.json)","tokens":300,"sizeBytes":183},{"name":"render.yaml","path":"tools/fleet-slackbot/render.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/render.yaml","title":"Fleet-slackbot Skill","category":"anthropic-skill","format":"yaml","content":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/render.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/render.yaml)","tokens":300,"sizeBytes":181},{"name":"slack-manifest.json","path":"tools/fleet-slackbot/slack-manifest.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/slack-manifest.json","title":"Fleet-slackbot Skill","category":"anthropic-skill","format":"json","content":"# Fleet-slackbot Skill\n\nPath: `tools/fleet-slackbot/slack-manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/slack-manifest.json)","tokens":300,"sizeBytes":197},{"name":"package.json","path":"tools/fleetctl-npm/package.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/package.json","title":"Fleetctl-npm Skill","category":"anthropic-skill","format":"json","content":"# Fleetctl-npm Skill\n\nPath: `tools/fleetctl-npm/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/package.json)","tokens":300,"sizeBytes":177},{"name":"TEST_SUMMARY.md","path":"tools/github-manage/pkg/ghapi/TEST_SUMMARY.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/TEST_SUMMARY.md","title":"Ghapi Skill","category":"anthropic-skill","format":"markdown","content":"# Ghapi Skill\n\nPath: `tools/github-manage/pkg/ghapi/TEST_SUMMARY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/TEST_SUMMARY.md)","tokens":300,"sizeBytes":198},{"name":"generated-schema.json","path":"tools/gitops-auto-complete/generated-schema.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/generated-schema.json","title":"Gitops-auto-complete Skill","category":"anthropic-skill","format":"json","content":"# Gitops-auto-complete Skill\n\nPath: `tools/gitops-auto-complete/generated-schema.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/generated-schema.json)","tokens":300,"sizeBytes":219},{"name":"package.json","path":"tools/hangar/frontend/package.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/package.json","title":"Frontend Skill","category":"anthropic-skill","format":"json","content":"# Frontend Skill\n\nPath: `tools/hangar/frontend/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/package.json)","tokens":300,"sizeBytes":179},{"name":"tsconfig.json","path":"tools/hangar/frontend/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/tsconfig.json","title":"Frontend Skill","category":"anthropic-skill","format":"json","content":"# Frontend Skill\n\nPath: `tools/hangar/frontend/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/frontend/tsconfig.json)","tokens":300,"sizeBytes":181},{"name":"483loadtest-2026-03-27-18h.json","path":"tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json","title":"483loadtest Skill","category":"anthropic-skill","format":"json","content":"# 483loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/483loadtest/483loadtest-2026-03-27-18h.json)","tokens":300,"sizeBytes":274},{"name":"484loadtest-2026-04-21-202817Z-16h.json","path":"tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json","title":"484loadtest Skill","category":"anthropic-skill","format":"json","content":"# 484loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.json)","tokens":300,"sizeBytes":290},{"name":"484loadtest-2026-04-21-202817Z-16h.md","path":"tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md","title":"484loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 484loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/484loadtest/484loadtest-2026-04-21-202817Z-16h.md)","tokens":300,"sizeBytes":286},{"name":"485loadtest-2026-05-11-144517Z-16h.json","path":"tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json","title":"485loadtest Skill","category":"anthropic-skill","format":"json","content":"# 485loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.json)","tokens":300,"sizeBytes":290},{"name":"485loadtest-2026-05-11-144517Z-16h.md","path":"tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md","title":"485loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 485loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/485loadtest/485loadtest-2026-05-11-144517Z-16h.md)","tokens":300,"sizeBytes":286},{"name":"486loadtest-2026-05-27-215735Z-18h.json","path":"tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json","title":"486loadtest Skill","category":"anthropic-skill","format":"json","content":"# 486loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.json)","tokens":300,"sizeBytes":290},{"name":"486loadtest-2026-05-27-215735Z-18h.md","path":"tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md","title":"486loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 486loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/486loadtest/486loadtest-2026-05-27-215735Z-18h.md)","tokens":300,"sizeBytes":286},{"name":"487loadtest-2026-06-17-181104Z-20h.json","path":"tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json","title":"487loadtest Skill","category":"anthropic-skill","format":"json","content":"# 487loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.json)","tokens":300,"sizeBytes":290},{"name":"487loadtest-2026-06-17-181104Z-20h.md","path":"tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md","title":"487loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 487loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/487loadtest/487loadtest-2026-06-17-181104Z-20h.md)","tokens":300,"sizeBytes":286},{"name":"489loadtest-2026-07-10-210313Z-18h.json","path":"tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json","title":"489loadtest Skill","category":"anthropic-skill","format":"json","content":"# 489loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.json)","tokens":300,"sizeBytes":290},{"name":"489loadtest-2026-07-10-210313Z-18h.md","path":"tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md","title":"489loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 489loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/489loadtest/489loadtest-2026-07-10-210313Z-18h.md)","tokens":300,"sizeBytes":286},{"name":"490loadtest-2026-07-30-150402Z-6h.json","path":"tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json","title":"490loadtest Skill","category":"anthropic-skill","format":"json","content":"# 490loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.json)","tokens":300,"sizeBytes":288},{"name":"490loadtest-2026-07-30-150402Z-6h.md","path":"tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md","title":"490loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 490loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/490loadtest/490loadtest-2026-07-30-150402Z-6h.md)","tokens":300,"sizeBytes":284},{"name":"491loadtest-3-2026-08-28-235522Z-24h.json","path":"tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json","title":"491loadtest-3 Skill","category":"anthropic-skill","format":"json","content":"# 491loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.json)","tokens":300,"sizeBytes":300},{"name":"491loadtest-3-2026-08-28-235522Z-24h.md","path":"tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md","title":"491loadtest-3 Skill","category":"anthropic-skill","format":"markdown","content":"# 491loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/491loadtest-3/491loadtest-3-2026-08-28-235522Z-24h.md)","tokens":300,"sizeBytes":296},{"name":"492loadtest-orbit0-2026-09-10-182916Z-12h.json","path":"tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json","title":"492loadtest-orbit0 Skill","category":"anthropic-skill","format":"json","content":"# 492loadtest-orbit0 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.json)","tokens":300,"sizeBytes":325},{"name":"492loadtest-orbit0-2026-09-10-182916Z-12h.md","path":"tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md","title":"492loadtest-orbit0 Skill","category":"anthropic-skill","format":"markdown","content":"# 492loadtest-orbit0 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit0/492loadtest-orbit0-2026-09-10-182916Z-12h.md)","tokens":300,"sizeBytes":321},{"name":"492loadtest-orbit1-2026-09-10-182927Z-12h.json","path":"tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json","title":"492loadtest-orbit1 Skill","category":"anthropic-skill","format":"json","content":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.json)","tokens":300,"sizeBytes":325},{"name":"492loadtest-orbit1-2026-09-10-182927Z-12h.md","path":"tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md","title":"492loadtest-orbit1 Skill","category":"anthropic-skill","format":"markdown","content":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-182927Z-12h.md)","tokens":300,"sizeBytes":321},{"name":"492loadtest-orbit1-2026-09-10-232804Z-19h.json","path":"tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json","title":"492loadtest-orbit1 Skill","category":"anthropic-skill","format":"json","content":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.json)","tokens":300,"sizeBytes":325},{"name":"492loadtest-orbit1-2026-09-10-232804Z-19h.md","path":"tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md","title":"492loadtest-orbit1 Skill","category":"anthropic-skill","format":"markdown","content":"# 492loadtest-orbit1 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/492loadtest-orbit1/492loadtest-orbit1-2026-09-10-232804Z-19h.md)","tokens":300,"sizeBytes":321},{"name":"493loadtest-3-2026-10-07-132032Z-8h.json","path":"tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json","title":"493loadtest-3 Skill","category":"anthropic-skill","format":"json","content":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.json)","tokens":300,"sizeBytes":298},{"name":"493loadtest-3-2026-10-07-132032Z-8h.md","path":"tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md","title":"493loadtest-3 Skill","category":"anthropic-skill","format":"markdown","content":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-132032Z-8h.md)","tokens":300,"sizeBytes":294},{"name":"493loadtest-3-2026-10-07-195831Z-30m.json","path":"tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json","title":"493loadtest-3 Skill","category":"anthropic-skill","format":"json","content":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.json)","tokens":300,"sizeBytes":300},{"name":"493loadtest-3-2026-10-07-195831Z-30m.md","path":"tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md","title":"493loadtest-3 Skill","category":"anthropic-skill","format":"markdown","content":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-195831Z-30m.md)","tokens":300,"sizeBytes":296},{"name":"493loadtest-3-2026-10-07-205952Z-1h.json","path":"tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json","title":"493loadtest-3 Skill","category":"anthropic-skill","format":"json","content":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.json)","tokens":300,"sizeBytes":298},{"name":"493loadtest-3-2026-10-07-205952Z-1h.md","path":"tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md","title":"493loadtest-3 Skill","category":"anthropic-skill","format":"markdown","content":"# 493loadtest-3 Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest-3/493loadtest-3-2026-10-07-205952Z-1h.md)","tokens":300,"sizeBytes":294},{"name":"493loadtest-2026-10-01-124935Z-12h.json","path":"tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json","title":"493loadtest Skill","category":"anthropic-skill","format":"json","content":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.json)","tokens":300,"sizeBytes":290},{"name":"493loadtest-2026-10-01-124935Z-12h.md","path":"tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md","title":"493loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-124935Z-12h.md)","tokens":300,"sizeBytes":286},{"name":"493loadtest-2026-10-01-132708Z-17h.json","path":"tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json","title":"493loadtest Skill","category":"anthropic-skill","format":"json","content":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.json)","tokens":300,"sizeBytes":290},{"name":"493loadtest-2026-10-01-132708Z-17h.md","path":"tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md","title":"493loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-132708Z-17h.md)","tokens":300,"sizeBytes":286},{"name":"493loadtest-2026-10-01-183205Z-30m.json","path":"tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json","title":"493loadtest Skill","category":"anthropic-skill","format":"json","content":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.json)","tokens":300,"sizeBytes":290},{"name":"493loadtest-2026-10-01-183205Z-30m.md","path":"tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md","title":"493loadtest Skill","category":"anthropic-skill","format":"markdown","content":"# 493loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/baseline/493loadtest/493loadtest-2026-10-01-183205Z-30m.md)","tokens":300,"sizeBytes":286},{"name":"4460loadtesto2-2025-04-04-1h.json","path":"tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json","title":"4460loadtesto2 Skill","category":"anthropic-skill","format":"json","content":"# 4460loadtesto2 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4460loadtesto2/4460loadtesto2-2025-04-04-1h.json)","tokens":300,"sizeBytes":291},{"name":"4630loadtestbl-2025-02-12-1h.json","path":"tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json","title":"4630loadtestbl Skill","category":"anthropic-skill","format":"json","content":"# 4630loadtestbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4630loadtestbl/4630loadtestbl-2025-02-12-1h.json)","tokens":300,"sizeBytes":291},{"name":"4640loadtest-gabe-2025-02-11-1h.json","path":"tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json","title":"4640loadtest-gabe Skill","category":"anthropic-skill","format":"json","content":"# 4640loadtest-gabe Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtest-gabe/4640loadtest-gabe-2025-02-11-1h.json)","tokens":300,"sizeBytes":306},{"name":"4640loadtestbl-2025-02-17-1h.json","path":"tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json","title":"4640loadtestbl Skill","category":"anthropic-skill","format":"json","content":"# 4640loadtestbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtestbl/4640loadtestbl-2025-02-17-1h.json)","tokens":300,"sizeBytes":291},{"name":"4640loadtesto-2025-02-18-1h.json","path":"tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json","title":"4640loadtesto Skill","category":"anthropic-skill","format":"json","content":"# 4640loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640loadtesto/4640loadtesto-2025-02-18-1h.json)","tokens":300,"sizeBytes":286},{"name":"4640ltvulnbl-2025-02-21-1h.json","path":"tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json","title":"4640ltvulnbl Skill","category":"anthropic-skill","format":"json","content":"# 4640ltvulnbl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4640ltvulnbl/4640ltvulnbl-2025-02-21-1h.json)","tokens":300,"sizeBytes":281},{"name":"4650loadtestj1-2025-02-27-1h.json","path":"tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json","title":"4650loadtestj1 Skill","category":"anthropic-skill","format":"json","content":"# 4650loadtestj1 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650loadtestj1/4650loadtestj1-2025-02-27-1h.json)","tokens":300,"sizeBytes":291},{"name":"4650lt0311-2025-03-12-1h.json","path":"tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json","title":"4650lt0311 Skill","category":"anthropic-skill","format":"json","content":"# 4650lt0311 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650lt0311/4650lt0311-2025-03-12-1h.json)","tokens":300,"sizeBytes":271},{"name":"4650wincptest-2025-03-10-1h.json","path":"tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json","title":"4650wincptest Skill","category":"anthropic-skill","format":"json","content":"# 4650wincptest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4650wincptest/4650wincptest-2025-03-10-1h.json)","tokens":300,"sizeBytes":286},{"name":"4660loadtesto-2025-04-02-1h.json","path":"tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json","title":"4660loadtesto Skill","category":"anthropic-skill","format":"json","content":"# 4660loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4660loadtesto/4660loadtesto-2025-04-02-1h.json)","tokens":300,"sizeBytes":286},{"name":"4670loadtestj-2025-04-24-1h.json","path":"tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json","title":"4670loadtestj Skill","category":"anthropic-skill","format":"json","content":"# 4670loadtestj Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4670loadtestj/4670loadtestj-2025-04-24-1h.json)","tokens":300,"sizeBytes":286},{"name":"4673to468mig-2025-05-21-1h.json","path":"tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json","title":"4673to468mig Skill","category":"anthropic-skill","format":"json","content":"# 4673to468mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4673to468mig/4673to468mig-2025-05-21-1h.json)","tokens":300,"sizeBytes":281},{"name":"4680loadtest02-2025-05-21-1h.json","path":"tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json","title":"4680loadtest02 Skill","category":"anthropic-skill","format":"json","content":"# 4680loadtest02 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4680loadtest02/4680loadtest02-2025-05-21-1h.json)","tokens":300,"sizeBytes":291},{"name":"468to469mig-2025-06-12-1h.json","path":"tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json","title":"468to469mig Skill","category":"anthropic-skill","format":"json","content":"# 468to469mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/468to469mig/468to469mig-2025-06-12-1h.json)","tokens":300,"sizeBytes":276},{"name":"4690loadtesto-2025-06-12-1h.json","path":"tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json","title":"4690loadtesto Skill","category":"anthropic-skill","format":"json","content":"# 4690loadtesto Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4690loadtesto/4690loadtesto-2025-06-12-1h.json)","tokens":300,"sizeBytes":286},{"name":"469to470mig-2025-06-24-1h.json","path":"tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json","title":"469to470mig Skill","category":"anthropic-skill","format":"json","content":"# 469to470mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/469to470mig/469to470mig-2025-06-24-1h.json)","tokens":300,"sizeBytes":276},{"name":"470loadtest-2025-06-26-1h.json","path":"tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json","title":"470loadtest Skill","category":"anthropic-skill","format":"json","content":"# 470loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470loadtest/470loadtest-2025-06-26-1h.json)","tokens":300,"sizeBytes":276},{"name":"470to471mig-w-2025-07-16-1h.json","path":"tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json","title":"470to471mig-w Skill","category":"anthropic-skill","format":"json","content":"# 470to471mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/470to471mig-w/470to471mig-w-2025-07-16-1h.json)","tokens":300,"sizeBytes":286},{"name":"4711to472mig-w-2025-08-08-1h.json","path":"tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json","title":"4711to472mig-w Skill","category":"anthropic-skill","format":"json","content":"# 4711to472mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4711to472mig-w/4711to472mig-w-2025-08-08-1h.json)","tokens":300,"sizeBytes":291},{"name":"471loadtest-2025-07-17-1h.json","path":"tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json","title":"471loadtest Skill","category":"anthropic-skill","format":"json","content":"# 471loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/471loadtest/471loadtest-2025-07-17-1h.json)","tokens":300,"sizeBytes":276},{"name":"4720mdm-2025-08-01-1h.json","path":"tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json","title":"4720mdm Skill","category":"anthropic-skill","format":"json","content":"# 4720mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4720mdm/4720mdm-2025-08-01-1h.json)","tokens":300,"sizeBytes":256},{"name":"472loadtest-2025-08-09-1h.json","path":"tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json","title":"472loadtest Skill","category":"anthropic-skill","format":"json","content":"# 472loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/472loadtest/472loadtest-2025-08-09-1h.json)","tokens":300,"sizeBytes":276},{"name":"4735orch3-2025-10-10-1h.json","path":"tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json","title":"4735orch3 Skill","category":"anthropic-skill","format":"json","content":"# 4735orch3 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4735orch3/4735orch3-2025-10-10-1h.json)","tokens":300,"sizeBytes":266},{"name":"473loadtest-w3-2025-09-04-1h.json","path":"tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json","title":"473loadtest-w3 Skill","category":"anthropic-skill","format":"json","content":"# 473loadtest-w3 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473loadtest-w3/473loadtest-w3-2025-09-04-1h.json)","tokens":300,"sizeBytes":291},{"name":"473mdm-2025-09-02-1h.json","path":"tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json","title":"473mdm Skill","category":"anthropic-skill","format":"json","content":"# 473mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473mdm/473mdm-2025-09-02-1h.json)","tokens":300,"sizeBytes":251},{"name":"473to474mig-w1-2025-10-01-1h.json","path":"tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json","title":"473to474mig-w1 Skill","category":"anthropic-skill","format":"json","content":"# 473to474mig-w1 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/473to474mig-w1/473to474mig-w1-2025-10-01-1h.json)","tokens":300,"sizeBytes":291},{"name":"4740mdm-2025-09-29-1h.json","path":"tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json","title":"4740mdm Skill","category":"anthropic-skill","format":"json","content":"# 4740mdm Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740mdm/4740mdm-2025-09-29-1h.json)","tokens":300,"sizeBytes":256},{"name":"4740orch-2025-10-02-1h.json","path":"tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json","title":"4740orch Skill","category":"anthropic-skill","format":"json","content":"# 4740orch Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4740orch/4740orch-2025-10-02-1h.json)","tokens":300,"sizeBytes":261},{"name":"474to475mig-w-2025-10-16-1h.json","path":"tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json","title":"474to475mig-w Skill","category":"anthropic-skill","format":"json","content":"# 474to475mig-w Skill\n\nPath: `tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/474to475mig-w/474to475mig-w-2025-10-16-1h.json)","tokens":300,"sizeBytes":286},{"name":"4750orchl-2025-10-17-1h-2.json","path":"tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json","title":"4750orchl Skill","category":"anthropic-skill","format":"json","content":"# 4750orchl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h-2.json)","tokens":300,"sizeBytes":270},{"name":"4750orchl-2025-10-17-1h.json","path":"tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json","title":"4750orchl Skill","category":"anthropic-skill","format":"json","content":"# 4750orchl Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4750orchl/4750orchl-2025-10-17-1h.json)","tokens":300,"sizeBytes":266},{"name":"475to476mig-2025-11-04-1h.json","path":"tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json","title":"475to476mig Skill","category":"anthropic-skill","format":"json","content":"# 475to476mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/475to476mig/475to476mig-2025-11-04-1h.json)","tokens":300,"sizeBytes":276},{"name":"476loadtest-2025-11-06-1h.json","path":"tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json","title":"476loadtest Skill","category":"anthropic-skill","format":"json","content":"# 476loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476loadtest/476loadtest-2025-11-06-1h.json)","tokens":300,"sizeBytes":276},{"name":"476to477mig-2025-11-20-1h.json","path":"tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json","title":"476to477mig Skill","category":"anthropic-skill","format":"json","content":"# 476to477mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/476to477mig/476to477mig-2025-11-20-1h.json)","tokens":300,"sizeBytes":276},{"name":"4770loadtest-2025-11-21-1h.json","path":"tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json","title":"4770loadtest Skill","category":"anthropic-skill","format":"json","content":"# 4770loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/4770loadtest/4770loadtest-2025-11-21-1h.json)","tokens":300,"sizeBytes":281},{"name":"477loadtest-2025-11-25-1h.json","path":"tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json","title":"477loadtest Skill","category":"anthropic-skill","format":"json","content":"# 477loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477loadtest/477loadtest-2025-11-25-1h.json)","tokens":300,"sizeBytes":276},{"name":"477to478mig-2025-12-18-1h.json","path":"tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json","title":"477to478mig Skill","category":"anthropic-skill","format":"json","content":"# 477to478mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/477to478mig/477to478mig-2025-12-18-1h.json)","tokens":300,"sizeBytes":276},{"name":"478loadtest-2025-12-19-1h.json","path":"tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json","title":"478loadtest Skill","category":"anthropic-skill","format":"json","content":"# 478loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478loadtest/478loadtest-2025-12-19-1h.json)","tokens":300,"sizeBytes":276},{"name":"478to479mig-2026-01-10-1h.json","path":"tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json","title":"478to479mig Skill","category":"anthropic-skill","format":"json","content":"# 478to479mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/478to479mig/478to479mig-2026-01-10-1h.json)","tokens":300,"sizeBytes":276},{"name":"479loadtest-2026-01-13-1h.json","path":"tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json","title":"479loadtest Skill","category":"anthropic-skill","format":"json","content":"# 479loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479loadtest/479loadtest-2026-01-13-1h.json)","tokens":300,"sizeBytes":276},{"name":"479to480mig-2026-01-28-1h.json","path":"tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json","title":"479to480mig Skill","category":"anthropic-skill","format":"json","content":"# 479to480mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/479to480mig/479to480mig-2026-01-28-1h.json)","tokens":300,"sizeBytes":276},{"name":"480loadtest-2026-01-29-1h.json","path":"tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json","title":"480loadtest Skill","category":"anthropic-skill","format":"json","content":"# 480loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480loadtest/480loadtest-2026-01-29-1h.json)","tokens":300,"sizeBytes":276},{"name":"480to481mig-2026-02-18-1h.json","path":"tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json","title":"480to481mig Skill","category":"anthropic-skill","format":"json","content":"# 480to481mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/480to481mig/480to481mig-2026-02-18-1h.json)","tokens":300,"sizeBytes":276},{"name":"481loadtest-2026-02-18-1h.json","path":"tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json","title":"481loadtest Skill","category":"anthropic-skill","format":"json","content":"# 481loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481loadtest/481loadtest-2026-02-18-1h.json)","tokens":300,"sizeBytes":276},{"name":"481to482mig-2026-03-05-1h.json","path":"tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json","title":"481to482mig Skill","category":"anthropic-skill","format":"json","content":"# 481to482mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/481to482mig/481to482mig-2026-03-05-1h.json)","tokens":300,"sizeBytes":276},{"name":"482loadtest-30-2026-03-10-1h.json","path":"tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json","title":"482loadtest-30 Skill","category":"anthropic-skill","format":"json","content":"# 482loadtest-30 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest-30/482loadtest-30-2026-03-10-1h.json)","tokens":300,"sizeBytes":291},{"name":"482loadtest-2026-03-10-1h.json","path":"tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json","title":"482loadtest Skill","category":"anthropic-skill","format":"json","content":"# 482loadtest Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482loadtest/482loadtest-2026-03-10-1h.json)","tokens":300,"sizeBytes":276},{"name":"482plusvc-2026-03-18-1h.json","path":"tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json","title":"482plusvc Skill","category":"anthropic-skill","format":"json","content":"# 482plusvc Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482plusvc/482plusvc-2026-03-18-1h.json)","tokens":300,"sizeBytes":266},{"name":"482to483mig-2026-03-27-1h.json","path":"tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json","title":"482to483mig Skill","category":"anthropic-skill","format":"json","content":"# 482to483mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/482to483mig/482to483mig-2026-03-27-1h.json)","tokens":300,"sizeBytes":276},{"name":"483to484mig-2026-04-21-1h.json","path":"tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json","title":"483to484mig Skill","category":"anthropic-skill","format":"json","content":"# 483to484mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/483to484mig/483to484mig-2026-04-21-1h.json)","tokens":300,"sizeBytes":276},{"name":"484to485mig-2026-05-07-1h.json","path":"tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json","title":"484to485mig Skill","category":"anthropic-skill","format":"json","content":"# 484to485mig Skill\n\nPath: `tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/484to485mig/484to485mig-2026-05-07-1h.json)","tokens":300,"sizeBytes":276},{"name":"andrey-481-2026-02-23-1h.json","path":"tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json","title":"Andrey-481 Skill","category":"anthropic-skill","format":"json","content":"# Andrey-481 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/andrey-481/andrey-481-2026-02-23-1h.json)","tokens":300,"sizeBytes":271},{"name":"mig66to68-2025-05-06-1h.json","path":"tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json","title":"Mig66to68 Skill","category":"anthropic-skill","format":"json","content":"# Mig66to68 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/mig66to68/mig66to68-2025-05-06-1h.json)","tokens":300,"sizeBytes":266},{"name":"qa-42544-2026-03-30-1h.json","path":"tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json","title":"Qa-42544 Skill","category":"anthropic-skill","format":"json","content":"# Qa-42544 Skill\n\nPath: `tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/qa-42544/qa-42544-2026-03-30-1h.json)","tokens":300,"sizeBytes":261},{"name":"483applemdm-2026-04-23-185210Z-1h.json","path":"tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json","title":"483applemdm Skill","category":"anthropic-skill","format":"json","content":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.json)","tokens":300,"sizeBytes":278},{"name":"483applemdm-2026-04-23-185210Z-1h.md","path":"tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md","title":"483applemdm Skill","category":"anthropic-skill","format":"markdown","content":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185210Z-1h.md)","tokens":300,"sizeBytes":274},{"name":"483applemdm-2026-04-23-185318Z-3h.json","path":"tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json","title":"483applemdm Skill","category":"anthropic-skill","format":"json","content":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.json)","tokens":300,"sizeBytes":278},{"name":"483applemdm-2026-04-23-185318Z-3h.md","path":"tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md","title":"483applemdm Skill","category":"anthropic-skill","format":"markdown","content":"# 483applemdm Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/483applemdm/483applemdm-2026-04-23-185318Z-3h.md)","tokens":300,"sizeBytes":274},{"name":"484win-release-2026-04-24-140020Z-12h.json","path":"tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json","title":"484win-release Skill","category":"anthropic-skill","format":"json","content":"# 484win-release Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.json)","tokens":300,"sizeBytes":295},{"name":"484win-release-2026-04-24-140020Z-12h.md","path":"tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md","title":"484win-release Skill","category":"anthropic-skill","format":"markdown","content":"# 484win-release Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/484win-release/484win-release-2026-04-24-140020Z-12h.md)","tokens":300,"sizeBytes":291},{"name":"486-windows-2026-05-19-224746Z-35m.json","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json","title":"486-windows Skill","category":"anthropic-skill","format":"json","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.json)","tokens":300,"sizeBytes":280},{"name":"486-windows-2026-05-19-224746Z-35m.md","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md","title":"486-windows Skill","category":"anthropic-skill","format":"markdown","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-224746Z-35m.md)","tokens":300,"sizeBytes":276},{"name":"486-windows-2026-05-19-230906Z-20m.json","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json","title":"486-windows Skill","category":"anthropic-skill","format":"json","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.json)","tokens":300,"sizeBytes":280},{"name":"486-windows-2026-05-19-230906Z-20m.md","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md","title":"486-windows Skill","category":"anthropic-skill","format":"markdown","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-230906Z-20m.md)","tokens":300,"sizeBytes":276},{"name":"486-windows-2026-05-19-233833Z-30m.json","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json","title":"486-windows Skill","category":"anthropic-skill","format":"json","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.json)","tokens":300,"sizeBytes":280},{"name":"486-windows-2026-05-19-233833Z-30m.md","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md","title":"486-windows Skill","category":"anthropic-skill","format":"markdown","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-19-233833Z-30m.md)","tokens":300,"sizeBytes":276},{"name":"486-windows-2026-05-20-000458Z-25m.json","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json","title":"486-windows Skill","category":"anthropic-skill","format":"json","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.json)","tokens":300,"sizeBytes":280},{"name":"486-windows-2026-05-20-000458Z-25m.md","path":"tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md","title":"486-windows Skill","category":"anthropic-skill","format":"markdown","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/486-windows-2026-05-20-000458Z-25m.md)","tokens":300,"sizeBytes":276},{"name":"REPORT.md","path":"tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md","title":"486-windows Skill","category":"anthropic-skill","format":"markdown","content":"# 486-windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/486-windows/REPORT.md)","tokens":300,"sizeBytes":220},{"name":"489windows-2-2026-07-08-211851Z-3h.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.json)","tokens":300,"sizeBytes":283},{"name":"489windows-2-2026-07-08-211851Z-3h.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-211851Z-3h.md)","tokens":300,"sizeBytes":279},{"name":"489windows-2-2026-07-08-215519Z-35m.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.json)","tokens":300,"sizeBytes":285},{"name":"489windows-2-2026-07-08-215519Z-35m.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-215519Z-35m.md)","tokens":300,"sizeBytes":281},{"name":"489windows-2-2026-07-08-225223Z-55m.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.json)","tokens":300,"sizeBytes":285},{"name":"489windows-2-2026-07-08-225223Z-55m.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-08-225223Z-55m.md)","tokens":300,"sizeBytes":281},{"name":"489windows-2-2026-07-09-001312Z-70m.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.json)","tokens":300,"sizeBytes":285},{"name":"489windows-2-2026-07-09-001312Z-70m.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-001312Z-70m.md)","tokens":300,"sizeBytes":281},{"name":"489windows-2-2026-07-09-005158Z-30m.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.json)","tokens":300,"sizeBytes":285},{"name":"489windows-2-2026-07-09-005158Z-30m.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-005158Z-30m.md)","tokens":300,"sizeBytes":281},{"name":"489windows-2-2026-07-09-020449Z-70m.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.json)","tokens":300,"sizeBytes":285},{"name":"489windows-2-2026-07-09-020449Z-70m.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-020449Z-70m.md)","tokens":300,"sizeBytes":281},{"name":"489windows-2-2026-07-09-034920Z-2h.json","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json","title":"489windows-2 Skill","category":"anthropic-skill","format":"json","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.json)","tokens":300,"sizeBytes":283},{"name":"489windows-2-2026-07-09-034920Z-2h.md","path":"tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md","title":"489windows-2 Skill","category":"anthropic-skill","format":"markdown","content":"# 489windows-2 Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/489windows-2/489windows-2-2026-07-09-034920Z-2h.md)","tokens":300,"sizeBytes":279},{"name":"490windows-2026-07-28-210427Z-40m.json","path":"tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json","title":"490windows Skill","category":"anthropic-skill","format":"json","content":"# 490windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.json)","tokens":300,"sizeBytes":275},{"name":"490windows-2026-07-28-210427Z-40m.md","path":"tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md","title":"490windows Skill","category":"anthropic-skill","format":"markdown","content":"# 490windows Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/490windows/490windows-2026-07-28-210427Z-40m.md)","tokens":300,"sizeBytes":271},{"name":"apple-reconciler-2026-09-22-080413Z-3h.json","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"json","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.json)","tokens":300,"sizeBytes":348},{"name":"apple-reconciler-2026-09-22-080413Z-3h.md","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"markdown","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-080413Z-3h.md)","tokens":300,"sizeBytes":344},{"name":"apple-reconciler-2026-09-22-083930Z-35m.json","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"json","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.json)","tokens":300,"sizeBytes":350},{"name":"apple-reconciler-2026-09-22-083930Z-35m.md","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"markdown","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-083930Z-35m.md)","tokens":300,"sizeBytes":346},{"name":"apple-reconciler-2026-09-22-092955Z-47m.json","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"json","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.json)","tokens":300,"sizeBytes":350},{"name":"apple-reconciler-2026-09-22-092955Z-47m.md","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"markdown","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-092955Z-47m.md)","tokens":300,"sizeBytes":346},{"name":"apple-reconciler-2026-09-22-102436Z-25m.json","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"json","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.json)","tokens":300,"sizeBytes":350},{"name":"apple-reconciler-2026-09-22-102436Z-25m.md","path":"tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md","title":"494-apple-reconciler-drain-loop Skill","category":"anthropic-skill","format":"markdown","content":"# 494-apple-reconciler-drain-loop Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/494-apple-reconciler-drain-loop/apple-reconciler-2026-09-22-102436Z-25m.md)","tokens":300,"sizeBytes":346},{"name":"mock-apns-2026-08-21-171402Z-1h.json","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json","title":"Mock-apns Skill","category":"anthropic-skill","format":"json","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.json)","tokens":300,"sizeBytes":268},{"name":"mock-apns-2026-08-21-171402Z-1h.md","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md","title":"Mock-apns Skill","category":"anthropic-skill","format":"markdown","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-171402Z-1h.md)","tokens":300,"sizeBytes":264},{"name":"mock-apns-2026-08-21-172709Z-20m.json","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json","title":"Mock-apns Skill","category":"anthropic-skill","format":"json","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.json)","tokens":300,"sizeBytes":270},{"name":"mock-apns-2026-08-21-172709Z-20m.md","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md","title":"Mock-apns Skill","category":"anthropic-skill","format":"markdown","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-172709Z-20m.md)","tokens":300,"sizeBytes":266},{"name":"mock-apns-2026-08-21-174828Z-20m.json","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json","title":"Mock-apns Skill","category":"anthropic-skill","format":"json","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.json)","tokens":300,"sizeBytes":270},{"name":"mock-apns-2026-08-21-174828Z-20m.md","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md","title":"Mock-apns Skill","category":"anthropic-skill","format":"markdown","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-174828Z-20m.md)","tokens":300,"sizeBytes":266},{"name":"mock-apns-2026-08-21-184317Z-20m.json","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json","title":"Mock-apns Skill","category":"anthropic-skill","format":"json","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.json)","tokens":300,"sizeBytes":270},{"name":"mock-apns-2026-08-21-184317Z-20m.md","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md","title":"Mock-apns Skill","category":"anthropic-skill","format":"markdown","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-184317Z-20m.md)","tokens":300,"sizeBytes":266},{"name":"mock-apns-2026-08-21-193108Z-20m.json","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json","title":"Mock-apns Skill","category":"anthropic-skill","format":"json","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.json)","tokens":300,"sizeBytes":270},{"name":"mock-apns-2026-08-21-193108Z-20m.md","path":"tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md","title":"Mock-apns Skill","category":"anthropic-skill","format":"markdown","content":"# Mock-apns Skill\n\nPath: `tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/mdm/mock-apns/mock-apns-2026-08-21-193108Z-20m.md)","tokens":300,"sizeBytes":266},{"name":"485to486mig-2026-05-27-221200Z-6h.json","path":"tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json","title":"485to486mig Skill","category":"anthropic-skill","format":"json","content":"# 485to486mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.json)","tokens":300,"sizeBytes":290},{"name":"485to486mig-2026-05-27-221200Z-6h.md","path":"tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md","title":"485to486mig Skill","category":"anthropic-skill","format":"markdown","content":"# 485to486mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/485to486mig/485to486mig-2026-05-27-221200Z-6h.md)","tokens":300,"sizeBytes":286},{"name":"486to487mig-2026-06-17-195042Z-1h.json","path":"tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json","title":"486to487mig Skill","category":"anthropic-skill","format":"json","content":"# 486to487mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.json)","tokens":300,"sizeBytes":290},{"name":"486to487mig-2026-06-17-195042Z-1h.md","path":"tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md","title":"486to487mig Skill","category":"anthropic-skill","format":"markdown","content":"# 486to487mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/486to487mig/486to487mig-2026-06-17-195042Z-1h.md)","tokens":300,"sizeBytes":286},{"name":"487to489mig-2026-07-10-162812Z-1h.json","path":"tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json","title":"487to489mig Skill","category":"anthropic-skill","format":"json","content":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.json)","tokens":300,"sizeBytes":290},{"name":"487to489mig-2026-07-10-162812Z-1h.md","path":"tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md","title":"487to489mig Skill","category":"anthropic-skill","format":"markdown","content":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-162812Z-1h.md)","tokens":300,"sizeBytes":286},{"name":"487to489mig-2026-07-10-192738Z-130m.json","path":"tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json","title":"487to489mig Skill","category":"anthropic-skill","format":"json","content":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.json)","tokens":300,"sizeBytes":294},{"name":"487to489mig-2026-07-10-192738Z-130m.md","path":"tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md","title":"487to489mig Skill","category":"anthropic-skill","format":"markdown","content":"# 487to489mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/487to489mig/487to489mig-2026-07-10-192738Z-130m.md)","tokens":300,"sizeBytes":290},{"name":"490mig2-2026-08-03-160436Z-30m.json","path":"tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json","title":"489to490mig Skill","category":"anthropic-skill","format":"json","content":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.json)","tokens":300,"sizeBytes":284},{"name":"490mig2-2026-08-03-160436Z-30m.md","path":"tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md","title":"489to490mig Skill","category":"anthropic-skill","format":"markdown","content":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-160436Z-30m.md)","tokens":300,"sizeBytes":280},{"name":"490mig2-2026-08-03-203925Z-200m.json","path":"tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json","title":"489to490mig Skill","category":"anthropic-skill","format":"json","content":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.json)","tokens":300,"sizeBytes":286},{"name":"490mig2-2026-08-03-203925Z-200m.md","path":"tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md","title":"489to490mig Skill","category":"anthropic-skill","format":"markdown","content":"# 489to490mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/489to490mig/490mig2-2026-08-03-203925Z-200m.md)","tokens":300,"sizeBytes":282},{"name":"490to491mig3-2026-08-26-152159Z-3h.json","path":"tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json","title":"490to491mig3 Skill","category":"anthropic-skill","format":"json","content":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.json)","tokens":300,"sizeBytes":295},{"name":"490to491mig3-2026-08-26-152159Z-3h.md","path":"tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md","title":"490to491mig3 Skill","category":"anthropic-skill","format":"markdown","content":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-152159Z-3h.md)","tokens":300,"sizeBytes":291},{"name":"490to491mig3-2026-08-26-180834Z-30m.json","path":"tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json","title":"490to491mig3 Skill","category":"anthropic-skill","format":"json","content":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.json)","tokens":300,"sizeBytes":297},{"name":"490to491mig3-2026-08-26-180834Z-30m.md","path":"tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md","title":"490to491mig3 Skill","category":"anthropic-skill","format":"markdown","content":"# 490to491mig3 Skill\n\nPath: `tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/490to491mig3/490to491mig3-2026-08-26-180834Z-30m.md)","tokens":300,"sizeBytes":293},{"name":"491to492mig-2026-09-10-005645Z-1h.json","path":"tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json","title":"491to492mig Skill","category":"anthropic-skill","format":"json","content":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.json)","tokens":300,"sizeBytes":290},{"name":"491to492mig-2026-09-10-005645Z-1h.md","path":"tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md","title":"491to492mig Skill","category":"anthropic-skill","format":"markdown","content":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-005645Z-1h.md)","tokens":300,"sizeBytes":286},{"name":"491to492mig-2026-09-10-020111Z-30m.json","path":"tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json","title":"491to492mig Skill","category":"anthropic-skill","format":"json","content":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.json)","tokens":300,"sizeBytes":292},{"name":"491to492mig-2026-09-10-020111Z-30m.md","path":"tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md","title":"491to492mig Skill","category":"anthropic-skill","format":"markdown","content":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-020111Z-30m.md)","tokens":300,"sizeBytes":288},{"name":"491to492mig-2026-09-10-041224Z-140m.json","path":"tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json","title":"491to492mig Skill","category":"anthropic-skill","format":"json","content":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.json)","tokens":300,"sizeBytes":294},{"name":"491to492mig-2026-09-10-041224Z-140m.md","path":"tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md","title":"491to492mig Skill","category":"anthropic-skill","format":"markdown","content":"# 491to492mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/491to492mig/491to492mig-2026-09-10-041224Z-140m.md)","tokens":300,"sizeBytes":290},{"name":"492to4922mig-2026-09-30-004150Z-1h.json","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json","title":"492to4922mig Skill","category":"anthropic-skill","format":"json","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.json)","tokens":300,"sizeBytes":295},{"name":"492to4922mig-2026-09-30-004150Z-1h.md","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md","title":"492to4922mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-004150Z-1h.md)","tokens":300,"sizeBytes":291},{"name":"492to4922mig-2026-09-30-020727Z-20m.json","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json","title":"492to4922mig Skill","category":"anthropic-skill","format":"json","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.json)","tokens":300,"sizeBytes":297},{"name":"492to4922mig-2026-09-30-020727Z-20m.md","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md","title":"492to4922mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-020727Z-20m.md)","tokens":300,"sizeBytes":293},{"name":"492to4922mig-2026-09-30-025533Z-15m.json","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json","title":"492to4922mig Skill","category":"anthropic-skill","format":"json","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.json)","tokens":300,"sizeBytes":297},{"name":"492to4922mig-2026-09-30-025533Z-15m.md","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md","title":"492to4922mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-025533Z-15m.md)","tokens":300,"sizeBytes":293},{"name":"492to4922mig-2026-09-30-130016Z-10h.json","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json","title":"492to4922mig Skill","category":"anthropic-skill","format":"json","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.json)","tokens":300,"sizeBytes":297},{"name":"492to4922mig-2026-09-30-130016Z-10h.md","path":"tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md","title":"492to4922mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to4922mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to4922mig/492to4922mig-2026-09-30-130016Z-10h.md)","tokens":300,"sizeBytes":293},{"name":"492to4922mig-2026-09-30-181238Z-1h.json","path":"tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json","title":"492to493mig Skill","category":"anthropic-skill","format":"json","content":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.json)","tokens":300,"sizeBytes":292},{"name":"492to4922mig-2026-09-30-181238Z-1h.md","path":"tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md","title":"492to493mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-181238Z-1h.md)","tokens":300,"sizeBytes":288},{"name":"492to4922mig-2026-09-30-191942Z-1h.json","path":"tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json","title":"492to493mig Skill","category":"anthropic-skill","format":"json","content":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.json)","tokens":300,"sizeBytes":292},{"name":"492to4922mig-2026-09-30-191942Z-1h.md","path":"tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md","title":"492to493mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-191942Z-1h.md)","tokens":300,"sizeBytes":288},{"name":"492to4922mig-2026-09-30-193246Z-30m.json","path":"tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json","title":"492to493mig Skill","category":"anthropic-skill","format":"json","content":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.json)","tokens":300,"sizeBytes":294},{"name":"492to4922mig-2026-09-30-193246Z-30m.md","path":"tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md","title":"492to493mig Skill","category":"anthropic-skill","format":"markdown","content":"# 492to493mig Skill\n\nPath: `tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/migration/492to493mig/492to4922mig-2026-09-30-193246Z-30m.md)","tokens":300,"sizeBytes":290},{"name":"transfertest-2026-09-03-192523Z-2h.json","path":"tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json","title":"Transfertest Skill","category":"anthropic-skill","format":"json","content":"# Transfertest Skill\n\nPath: `tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.json)","tokens":300,"sizeBytes":275},{"name":"transfertest-2026-09-03-192523Z-2h.md","path":"tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md","title":"Transfertest Skill","category":"anthropic-skill","format":"markdown","content":"# Transfertest Skill\n\nPath: `tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/transfertest/transfertest-2026-09-03-192523Z-2h.md)","tokens":300,"sizeBytes":271},{"name":"glossary-and-protocols.md","path":"tools/mdm/apple/glossary-and-protocols.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/glossary-and-protocols.md","title":"Apple Skill","category":"anthropic-skill","format":"markdown","content":"# Apple Skill\n\nPath: `tools/mdm/apple/glossary-and-protocols.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/glossary-and-protocols.md)","tokens":300,"sizeBytes":190},{"name":"toggle-mdm-dev.md","path":"tools/mdm/apple/toggle-mdm-dev.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/toggle-mdm-dev.md","title":"Apple Skill","category":"anthropic-skill","format":"markdown","content":"# Apple Skill\n\nPath: `tools/mdm/apple/toggle-mdm-dev.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/toggle-mdm-dev.md)","tokens":300,"sizeBytes":174},{"name":"troubleshooting.md","path":"tools/mdm/apple/troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/troubleshooting.md","title":"Apple Skill","category":"anthropic-skill","format":"markdown","content":"# Apple Skill\n\nPath: `tools/mdm/apple/troubleshooting.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/troubleshooting.md)","tokens":300,"sizeBytes":176},{"name":"CHANGELOG.md","path":"tools/migration-cleanup/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/CHANGELOG.md","title":"Migration-cleanup Skill","category":"anthropic-skill","format":"markdown","content":"# Migration-cleanup Skill\n\nPath: `tools/migration-cleanup/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/CHANGELOG.md)","tokens":300,"sizeBytes":192},{"name":"cf-template.yaml","path":"tools/mysql-tests/rds/cf-template.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/cf-template.yaml","title":"Rds Skill","category":"anthropic-skill","format":"yaml","content":"# Rds Skill\n\nPath: `tools/mysql-tests/rds/cf-template.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/cf-template.yaml)","tokens":300,"sizeBytes":182},{"name":"cf-template.yaml","path":"tools/redis-tests/elasticache/cf-template.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/cf-template.yaml","title":"Elasticache Skill","category":"anthropic-skill","format":"yaml","content":"# Elasticache Skill\n\nPath: `tools/redis-tests/elasticache/cf-template.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/cf-template.yaml)","tokens":300,"sizeBytes":206},{"name":"test.json","path":"tools/screencap/workflows/test.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/workflows/test.json","title":"Workflows Skill","category":"anthropic-skill","format":"json","content":"# Workflows Skill\n\nPath: `tools/screencap/workflows/test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/workflows/test.json)","tokens":300,"sizeBytes":182},{"name":"database_custom_dashboard.json","path":"tools/signoz/database_custom_dashboard.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/database_custom_dashboard.json","title":"Signoz Skill","category":"anthropic-skill","format":"json","content":"# Signoz Skill\n\nPath: `tools/signoz/database_custom_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/database_custom_dashboard.json)","tokens":300,"sizeBytes":195},{"name":"host_cache_dashboard.json","path":"tools/signoz/host_cache_dashboard.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/host_cache_dashboard.json","title":"Signoz Skill","category":"anthropic-skill","format":"json","content":"# Signoz Skill\n\nPath: `tools/signoz/host_cache_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/host_cache_dashboard.json)","tokens":300,"sizeBytes":185},{"name":"http_errors_dashboard.json","path":"tools/signoz/http_errors_dashboard.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/http_errors_dashboard.json","title":"Signoz Skill","category":"anthropic-skill","format":"json","content":"# Signoz Skill\n\nPath: `tools/signoz/http_errors_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/http_errors_dashboard.json)","tokens":300,"sizeBytes":187},{"name":"otel-collector-config.yaml","path":"tools/telemetry/otel-collector-config.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/otel-collector-config.yaml","title":"Telemetry Skill","category":"anthropic-skill","format":"yaml","content":"# Telemetry Skill\n\nPath: `tools/telemetry/otel-collector-config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/otel-collector-config.yaml)","tokens":300,"sizeBytes":196},{"name":"generator.yaml","path":"tools/terraform/generator.yaml","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/generator.yaml","title":"Terraform Skill","category":"anthropic-skill","format":"yaml","content":"# Terraform Skill\n\nPath: `tools/terraform/generator.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/generator.yaml)","tokens":300,"sizeBytes":172},{"name":"openapi.json","path":"tools/terraform/openapi.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/openapi.json","title":"Terraform Skill","category":"anthropic-skill","format":"json","content":"# Terraform Skill\n\nPath: `tools/terraform/openapi.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/openapi.json)","tokens":300,"sizeBytes":168},{"name":"Fleetd-auto-update-test-guide.md","path":"tools/tuf/test/Fleetd-auto-update-test-guide.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/Fleetd-auto-update-test-guide.md","title":"Test Skill","category":"anthropic-skill","format":"markdown","content":"# Test Skill\n\nPath: `tools/tuf/test/Fleetd-auto-update-test-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/Fleetd-auto-update-test-guide.md)","tokens":300,"sizeBytes":201},{"name":"CLAUDE.md","path":".claude/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/CLAUDE.md","title":".claude - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# .claude - Claude Agent Guidelines & System Prompt\n\nPath: `.claude/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/CLAUDE.md)","tokens":300,"sizeBytes":180},{"name":"validate.py","path":".claude/skills/fleet-gitops/scripts/validate.py","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/scripts/validate.py","title":"Claude Directive: validate.py","category":"claude-rule","format":"markdown","content":"# Claude Directive: validate.py\n\nPath: `.claude/skills/fleet-gitops/scripts/validate.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/scripts/validate.py)","tokens":300,"sizeBytes":220},{"name":"check-handbook-diff.sh","path":".claude/skills/handbook-pr/scripts/check-handbook-diff.sh","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/scripts/check-handbook-diff.sh","title":"Claude Directive: check-handbook-diff.sh","category":"claude-rule","format":"markdown","content":"# Claude Directive: check-handbook-diff.sh\n\nPath: `.claude/skills/handbook-pr/scripts/check-handbook-diff.sh`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/handbook-pr/scripts/check-handbook-diff.sh)","tokens":300,"sizeBytes":251},{"name":"burn_ux.py","path":".claude/skills/new-fma/scripts/burn_ux.py","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/burn_ux.py","title":"Claude Directive: burn_ux.py","category":"claude-rule","format":"markdown","content":"# Claude Directive: burn_ux.py\n\nPath: `.claude/skills/new-fma/scripts/burn_ux.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/burn_ux.py)","tokens":300,"sizeBytes":207},{"name":"check_queries.sh","path":".claude/skills/new-fma/scripts/check_queries.sh","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/check_queries.sh","title":"Claude Directive: check_queries.sh","category":"claude-rule","format":"markdown","content":"# Claude Directive: check_queries.sh\n\nPath: `.claude/skills/new-fma/scripts/check_queries.sh`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/check_queries.sh)","tokens":300,"sizeBytes":225},{"name":"pe_info.py","path":".claude/skills/new-fma/scripts/pe_info.py","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/pe_info.py","title":"Claude Directive: pe_info.py","category":"claude-rule","format":"markdown","content":"# Claude Directive: pe_info.py\n\nPath: `.claude/skills/new-fma/scripts/pe_info.py`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/new-fma/scripts/pe_info.py)","tokens":300,"sizeBytes":207},{"name":"aws-session-manager-plugin.json","path":"ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json","title":"winget Plugin Manifest","category":"plugin-manifest","format":"json","content":"# winget Plugin Manifest\n\nPath: `ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/aws-session-manager-plugin.json)","tokens":300,"sizeBytes":247},{"name":"zoom-outlook-plugin.json","path":"ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json","title":"winget Plugin Manifest","category":"plugin-manifest","format":"json","content":"# winget Plugin Manifest\n\nPath: `ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/maintained-apps/inputs/winget/zoom-outlook-plugin.json)","tokens":300,"sizeBytes":233},{"name":"README.md","path":"ee/tools/license/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/README.md","title":"license Documentation","category":"plugin-manifest","format":"markdown","content":"# license Documentation\n\nPath: `ee/tools/license/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/license/README.md)","tokens":300,"sizeBytes":170},{"name":"README.md","path":"ee/tools/mdm/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/mdm/README.md","title":"mdm Documentation","category":"plugin-manifest","format":"markdown","content":"# mdm Documentation\n\nPath: `ee/tools/mdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/mdm/README.md)","tokens":300,"sizeBytes":158},{"name":"README.md","path":"ee/tools/puppet/fleetdm/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/README.md","title":"fleetdm Documentation","category":"plugin-manifest","format":"markdown","content":"# fleetdm Documentation\n\nPath: `ee/tools/puppet/fleetdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/ee/tools/puppet/fleetdm/README.md)","tokens":300,"sizeBytes":184},{"name":"README.md","path":"orbit/pkg/table/ai_tools/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/pkg/table/ai_tools/README.md","title":"ai_tools Documentation","category":"plugin-manifest","format":"markdown","content":"# ai_tools Documentation\n\nPath: `orbit/pkg/table/ai_tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/orbit/pkg/table/ai_tools/README.md)","tokens":300,"sizeBytes":187},{"name":"README.md","path":"server/vulnerabilities/nvd/tools/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/README.md","title":"tools Documentation","category":"plugin-manifest","format":"markdown","content":"# tools Documentation\n\nPath: `server/vulnerabilities/nvd/tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/server/vulnerabilities/nvd/tools/README.md)","tokens":300,"sizeBytes":200},{"name":"README.md","path":"tools/android/cert-auth-server/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/android/cert-auth-server/README.md","title":"cert-auth-server Documentation","category":"plugin-manifest","format":"markdown","content":"# cert-auth-server Documentation\n\nPath: `tools/android/cert-auth-server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/android/cert-auth-server/README.md)","tokens":300,"sizeBytes":207},{"name":"README.md","path":"tools/api/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/api/README.md","title":"api Documentation","category":"plugin-manifest","format":"markdown","content":"# api Documentation\n\nPath: `tools/api/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/api/README.md)","tokens":300,"sizeBytes":152},{"name":"README.md","path":"tools/apm-elastic/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/apm-elastic/README.md","title":"apm-elastic Documentation","category":"plugin-manifest","format":"markdown","content":"# apm-elastic Documentation\n\nPath: `tools/apm-elastic/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/apm-elastic/README.md)","tokens":300,"sizeBytes":176},{"name":"README.md","path":"tools/backup_db/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/backup_db/README.md","title":"backup_db Documentation","category":"plugin-manifest","format":"markdown","content":"# backup_db Documentation\n\nPath: `tools/backup_db/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/backup_db/README.md)","tokens":300,"sizeBytes":170},{"name":"README.md","path":"tools/calendar/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/calendar/README.md","title":"calendar Documentation","category":"plugin-manifest","format":"markdown","content":"# calendar Documentation\n\nPath: `tools/calendar/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/calendar/README.md)","tokens":300,"sizeBytes":167},{"name":"README.md","path":"tools/charts-backfill/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-backfill/README.md","title":"charts-backfill Documentation","category":"plugin-manifest","format":"markdown","content":"# charts-backfill Documentation\n\nPath: `tools/charts-backfill/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-backfill/README.md)","tokens":300,"sizeBytes":188},{"name":"README.md","path":"tools/charts-collect/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-collect/README.md","title":"charts-collect Documentation","category":"plugin-manifest","format":"markdown","content":"# charts-collect Documentation\n\nPath: `tools/charts-collect/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/charts-collect/README.md)","tokens":300,"sizeBytes":185},{"name":"README.md","path":"tools/custom-package-parser/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/README.md","title":"custom-package-parser Documentation","category":"plugin-manifest","format":"markdown","content":"# custom-package-parser Documentation\n\nPath: `tools/custom-package-parser/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/custom-package-parser/README.md)","tokens":300,"sizeBytes":206},{"name":"README.md","path":"tools/desktop-rate-limit/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/desktop-rate-limit/README.md","title":"desktop-rate-limit Documentation","category":"plugin-manifest","format":"markdown","content":"# desktop-rate-limit Documentation\n\nPath: `tools/desktop-rate-limit/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/desktop-rate-limit/README.md)","tokens":300,"sizeBytes":197},{"name":"README.md","path":"tools/dibble/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/dibble/README.md","title":"dibble Documentation","category":"plugin-manifest","format":"markdown","content":"# dibble Documentation\n\nPath: `tools/dibble/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/dibble/README.md)","tokens":300,"sizeBytes":161},{"name":"README.md","path":"tools/file-server/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/file-server/README.md","title":"file-server Documentation","category":"plugin-manifest","format":"markdown","content":"# file-server Documentation\n\nPath: `tools/file-server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/file-server/README.md)","tokens":300,"sizeBytes":176},{"name":"README.md","path":"tools/fleet-slackbot/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/README.md","title":"fleet-slackbot Documentation","category":"plugin-manifest","format":"markdown","content":"# fleet-slackbot Documentation\n\nPath: `tools/fleet-slackbot/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleet-slackbot/README.md)","tokens":300,"sizeBytes":185},{"name":"README.md","path":"tools/fleetctl-docker/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-docker/README.md","title":"fleetctl-docker Documentation","category":"plugin-manifest","format":"markdown","content":"# fleetctl-docker Documentation\n\nPath: `tools/fleetctl-docker/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-docker/README.md)","tokens":300,"sizeBytes":188},{"name":"README.md","path":"tools/fleetctl-npm/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/README.md","title":"fleetctl-npm Documentation","category":"plugin-manifest","format":"markdown","content":"# fleetctl-npm Documentation\n\nPath: `tools/fleetctl-npm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetctl-npm/README.md)","tokens":300,"sizeBytes":179},{"name":"README.md","path":"tools/fleetd-linux/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetd-linux/README.md","title":"fleetd-linux Documentation","category":"plugin-manifest","format":"markdown","content":"# fleetd-linux Documentation\n\nPath: `tools/fleetd-linux/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/fleetd-linux/README.md)","tokens":300,"sizeBytes":179},{"name":"README.md","path":"tools/github-manage/pkg/ghapi/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/README.md","title":"ghapi Documentation","category":"plugin-manifest","format":"markdown","content":"# ghapi Documentation\n\nPath: `tools/github-manage/pkg/ghapi/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/pkg/ghapi/README.md)","tokens":300,"sizeBytes":194},{"name":"README.md","path":"tools/github-manage/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/README.md","title":"github-manage Documentation","category":"plugin-manifest","format":"markdown","content":"# github-manage Documentation\n\nPath: `tools/github-manage/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/github-manage/README.md)","tokens":300,"sizeBytes":182},{"name":"README.md","path":"tools/gitops-auto-complete/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/README.md","title":"gitops-auto-complete Documentation","category":"plugin-manifest","format":"markdown","content":"# gitops-auto-complete Documentation\n\nPath: `tools/gitops-auto-complete/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/gitops-auto-complete/README.md)","tokens":300,"sizeBytes":203},{"name":"README.md","path":"tools/hangar/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/README.md","title":"hangar Documentation","category":"plugin-manifest","format":"markdown","content":"# hangar Documentation\n\nPath: `tools/hangar/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/hangar/README.md)","tokens":300,"sizeBytes":161},{"name":"README.md","path":"tools/kubequery/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/kubequery/README.md","title":"kubequery Documentation","category":"plugin-manifest","format":"markdown","content":"# kubequery Documentation\n\nPath: `tools/kubequery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/kubequery/README.md)","tokens":300,"sizeBytes":170},{"name":"README.md","path":"tools/loadtest/fleetd_labels/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/fleetd_labels/README.md","title":"fleetd_labels Documentation","category":"plugin-manifest","format":"markdown","content":"# fleetd_labels Documentation\n\nPath: `tools/loadtest/fleetd_labels/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/fleetd_labels/README.md)","tokens":300,"sizeBytes":200},{"name":"README.md","path":"tools/loadtest/metrics/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/README.md","title":"metrics Documentation","category":"plugin-manifest","format":"markdown","content":"# metrics Documentation\n\nPath: `tools/loadtest/metrics/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/README.md)","tokens":300,"sizeBytes":182},{"name":"README.md","path":"tools/loadtest/metrics/runs/historical/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/README.md","title":"historical Documentation","category":"plugin-manifest","format":"markdown","content":"# historical Documentation\n\nPath: `tools/loadtest/metrics/runs/historical/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/metrics/runs/historical/README.md)","tokens":300,"sizeBytes":217},{"name":"README.md","path":"tools/loadtest/osquery/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/osquery/README.md","title":"osquery Documentation","category":"plugin-manifest","format":"markdown","content":"# osquery Documentation\n\nPath: `tools/loadtest/osquery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/osquery/README.md)","tokens":300,"sizeBytes":182},{"name":"README.md","path":"tools/loadtest/scripts_and_profiles/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/scripts_and_profiles/README.md","title":"scripts_and_profiles Documentation","category":"plugin-manifest","format":"markdown","content":"# scripts_and_profiles Documentation\n\nPath: `tools/loadtest/scripts_and_profiles/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/scripts_and_profiles/README.md)","tokens":300,"sizeBytes":221},{"name":"README.md","path":"tools/loadtest/unified_queue/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/unified_queue/README.md","title":"unified_queue Documentation","category":"plugin-manifest","format":"markdown","content":"# unified_queue Documentation\n\nPath: `tools/loadtest/unified_queue/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/loadtest/unified_queue/README.md)","tokens":300,"sizeBytes":200},{"name":"README.md","path":"tools/mdm/apple/appmanifest/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/appmanifest/README.md","title":"appmanifest Documentation","category":"plugin-manifest","format":"markdown","content":"# appmanifest Documentation\n\nPath: `tools/mdm/apple/appmanifest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/appmanifest/README.md)","tokens":300,"sizeBytes":196},{"name":"README.md","path":"tools/mdm/apple/loadtest/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/loadtest/README.md","title":"loadtest Documentation","category":"plugin-manifest","format":"markdown","content":"# loadtest Documentation\n\nPath: `tools/mdm/apple/loadtest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/loadtest/README.md)","tokens":300,"sizeBytes":187},{"name":"README.md","path":"tools/mdm/apple/macos-vm-auto-enroll/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/macos-vm-auto-enroll/README.md","title":"macos-vm-auto-enroll Documentation","category":"plugin-manifest","format":"markdown","content":"# macos-vm-auto-enroll Documentation\n\nPath: `tools/mdm/apple/macos-vm-auto-enroll/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/macos-vm-auto-enroll/README.md)","tokens":300,"sizeBytes":223},{"name":"README.md","path":"tools/mdm/apple/setupexperience/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/setupexperience/README.md","title":"setupexperience Documentation","category":"plugin-manifest","format":"markdown","content":"# setupexperience Documentation\n\nPath: `tools/mdm/apple/setupexperience/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/apple/setupexperience/README.md)","tokens":300,"sizeBytes":208},{"name":"README.md","path":"tools/mdm/assets/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/assets/README.md","title":"assets Documentation","category":"plugin-manifest","format":"markdown","content":"# assets Documentation\n\nPath: `tools/mdm/assets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/assets/README.md)","tokens":300,"sizeBytes":169},{"name":"README.md","path":"tools/mdm/migration/echo/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/echo/README.md","title":"echo Documentation","category":"plugin-manifest","format":"markdown","content":"# echo Documentation\n\nPath: `tools/mdm/migration/echo/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/echo/README.md)","tokens":300,"sizeBytes":183},{"name":"README.md","path":"tools/mdm/migration/jamf/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/jamf/README.md","title":"jamf Documentation","category":"plugin-manifest","format":"markdown","content":"# jamf Documentation\n\nPath: `tools/mdm/migration/jamf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/jamf/README.md)","tokens":300,"sizeBytes":183},{"name":"README.md","path":"tools/mdm/migration/kandji/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/kandji/README.md","title":"kandji Documentation","category":"plugin-manifest","format":"markdown","content":"# kandji Documentation\n\nPath: `tools/mdm/migration/kandji/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/kandji/README.md)","tokens":300,"sizeBytes":189},{"name":"README.md","path":"tools/mdm/migration/mdmproxy/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/mdmproxy/README.md","title":"mdmproxy Documentation","category":"plugin-manifest","format":"markdown","content":"# mdmproxy Documentation\n\nPath: `tools/mdm/migration/mdmproxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/mdmproxy/README.md)","tokens":300,"sizeBytes":195},{"name":"README.md","path":"tools/mdm/migration/micromdm/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/README.md","title":"micromdm Documentation","category":"plugin-manifest","format":"markdown","content":"# micromdm Documentation\n\nPath: `tools/mdm/migration/micromdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/README.md)","tokens":300,"sizeBytes":195},{"name":"README.md","path":"tools/mdm/migration/micromdm/touchless/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/touchless/README.md","title":"touchless Documentation","category":"plugin-manifest","format":"markdown","content":"# touchless Documentation\n\nPath: `tools/mdm/migration/micromdm/touchless/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/micromdm/touchless/README.md)","tokens":300,"sizeBytes":216},{"name":"README.md","path":"tools/mdm/migration/simplemdm/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/simplemdm/README.md","title":"simplemdm Documentation","category":"plugin-manifest","format":"markdown","content":"# simplemdm Documentation\n\nPath: `tools/mdm/migration/simplemdm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mdm/migration/simplemdm/README.md)","tokens":300,"sizeBytes":198},{"name":"README.md","path":"tools/migration-cleanup/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/README.md","title":"migration-cleanup Documentation","category":"plugin-manifest","format":"markdown","content":"# migration-cleanup Documentation\n\nPath: `tools/migration-cleanup/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/migration-cleanup/README.md)","tokens":300,"sizeBytes":194},{"name":"README.md","path":"tools/msal/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/msal/README.md","title":"msal Documentation","category":"plugin-manifest","format":"markdown","content":"# msal Documentation\n\nPath: `tools/msal/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/msal/README.md)","tokens":300,"sizeBytes":155},{"name":"README.md","path":"tools/mysql-replica-testing/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-replica-testing/README.md","title":"mysql-replica-testing Documentation","category":"plugin-manifest","format":"markdown","content":"# mysql-replica-testing Documentation\n\nPath: `tools/mysql-replica-testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-replica-testing/README.md)","tokens":300,"sizeBytes":206},{"name":"README.md","path":"tools/mysql-tests/rds/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/README.md","title":"rds Documentation","category":"plugin-manifest","format":"markdown","content":"# rds Documentation\n\nPath: `tools/mysql-tests/rds/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/mysql-tests/rds/README.md)","tokens":300,"sizeBytes":176},{"name":"README.md","path":"tools/nvd/nvdvuln/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/nvd/nvdvuln/README.md","title":"nvdvuln Documentation","category":"plugin-manifest","format":"markdown","content":"# nvdvuln Documentation\n\nPath: `tools/nvd/nvdvuln/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/nvd/nvdvuln/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"tools/oncall/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/oncall/README.md","title":"oncall Documentation","category":"plugin-manifest","format":"markdown","content":"# oncall Documentation\n\nPath: `tools/oncall/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/oncall/README.md)","tokens":300,"sizeBytes":161},{"name":"README.md","path":"tools/osquery-agent-options/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-agent-options/README.md","title":"osquery-agent-options Documentation","category":"plugin-manifest","format":"markdown","content":"# osquery-agent-options Documentation\n\nPath: `tools/osquery-agent-options/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-agent-options/README.md)","tokens":300,"sizeBytes":206},{"name":"README.md","path":"tools/osquery-testing/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-testing/README.md","title":"osquery-testing Documentation","category":"plugin-manifest","format":"markdown","content":"# osquery-testing Documentation\n\nPath: `tools/osquery-testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery-testing/README.md)","tokens":300,"sizeBytes":188},{"name":"README.md","path":"tools/osquery/in-a-box/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/in-a-box/README.md","title":"in-a-box Documentation","category":"plugin-manifest","format":"markdown","content":"# in-a-box Documentation\n\nPath: `tools/osquery/in-a-box/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/in-a-box/README.md)","tokens":300,"sizeBytes":183},{"name":"README.md","path":"tools/osquery/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/README.md","title":"osquery Documentation","category":"plugin-manifest","format":"markdown","content":"# osquery Documentation\n\nPath: `tools/osquery/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/osquery/README.md)","tokens":300,"sizeBytes":164},{"name":"README.md","path":"tools/percona/pmm/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/pmm/README.md","title":"pmm Documentation","category":"plugin-manifest","format":"markdown","content":"# pmm Documentation\n\nPath: `tools/percona/pmm/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/pmm/README.md)","tokens":300,"sizeBytes":168},{"name":"README.md","path":"tools/percona/test/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/test/README.md","title":"test Documentation","category":"plugin-manifest","format":"markdown","content":"# test Documentation\n\nPath: `tools/percona/test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/percona/test/README.md)","tokens":300,"sizeBytes":171},{"name":"README.md","path":"tools/qacheck/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/qacheck/README.md","title":"qacheck Documentation","category":"plugin-manifest","format":"markdown","content":"# qacheck Documentation\n\nPath: `tools/qacheck/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/qacheck/README.md)","tokens":300,"sizeBytes":164},{"name":"README.md","path":"tools/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/README.md","title":"tools Documentation","category":"plugin-manifest","format":"markdown","content":"# tools Documentation\n\nPath: `tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/README.md)","tokens":300,"sizeBytes":146},{"name":"README.md","path":"tools/redis-stress/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-stress/README.md","title":"redis-stress Documentation","category":"plugin-manifest","format":"markdown","content":"# redis-stress Documentation\n\nPath: `tools/redis-stress/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-stress/README.md)","tokens":300,"sizeBytes":179},{"name":"README.md","path":"tools/redis-tests/elasticache/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/README.md","title":"elasticache Documentation","category":"plugin-manifest","format":"markdown","content":"# elasticache Documentation\n\nPath: `tools/redis-tests/elasticache/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/redis-tests/elasticache/README.md)","tokens":300,"sizeBytes":200},{"name":"README.md","path":"tools/release/calendar-sync/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/calendar-sync/README.md","title":"calendar-sync Documentation","category":"plugin-manifest","format":"markdown","content":"# calendar-sync Documentation\n\nPath: `tools/release/calendar-sync/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/calendar-sync/README.md)","tokens":300,"sizeBytes":198},{"name":"README.md","path":"tools/release/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/README.md","title":"release Documentation","category":"plugin-manifest","format":"markdown","content":"# release Documentation\n\nPath: `tools/release/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/release/README.md)","tokens":300,"sizeBytes":164},{"name":"README.md","path":"tools/saml/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/saml/README.md","title":"saml Documentation","category":"plugin-manifest","format":"markdown","content":"# saml Documentation\n\nPath: `tools/saml/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/saml/README.md)","tokens":300,"sizeBytes":155},{"name":"README.md","path":"tools/screencap/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/README.md","title":"screencap Documentation","category":"plugin-manifest","format":"markdown","content":"# screencap Documentation\n\nPath: `tools/screencap/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/screencap/README.md)","tokens":300,"sizeBytes":170},{"name":"README.md","path":"tools/seed_data/queries/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/seed_data/queries/README.md","title":"queries Documentation","category":"plugin-manifest","format":"markdown","content":"# queries Documentation\n\nPath: `tools/seed_data/queries/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/seed_data/queries/README.md)","tokens":300,"sizeBytes":184},{"name":"README.md","path":"tools/sentry-self-hosted/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/sentry-self-hosted/README.md","title":"sentry-self-hosted Documentation","category":"plugin-manifest","format":"markdown","content":"# sentry-self-hosted Documentation\n\nPath: `tools/sentry-self-hosted/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/sentry-self-hosted/README.md)","tokens":300,"sizeBytes":197},{"name":"README.md","path":"tools/signoz/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/README.md","title":"signoz Documentation","category":"plugin-manifest","format":"markdown","content":"# signoz Documentation\n\nPath: `tools/signoz/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/signoz/README.md)","tokens":300,"sizeBytes":161},{"name":"README.md","path":"tools/software/icons/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/icons/README.md","title":"icons Documentation","category":"plugin-manifest","format":"markdown","content":"# icons Documentation\n\nPath: `tools/software/icons/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/icons/README.md)","tokens":300,"sizeBytes":176},{"name":"README.md","path":"tools/software/packages/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/packages/README.md","title":"packages Documentation","category":"plugin-manifest","format":"markdown","content":"# packages Documentation\n\nPath: `tools/software/packages/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/packages/README.md)","tokens":300,"sizeBytes":185},{"name":"README.md","path":"tools/software/vulnerabilities/performance_test/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/README.md","title":"performance_test Documentation","category":"plugin-manifest","format":"markdown","content":"# performance_test Documentation\n\nPath: `tools/software/vulnerabilities/performance_test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/README.md)","tokens":300,"sizeBytes":241},{"name":"README.md","path":"tools/software/vulnerabilities/performance_test/seeder/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/seeder/README.md","title":"seeder Documentation","category":"plugin-manifest","format":"markdown","content":"# seeder Documentation\n\nPath: `tools/software/vulnerabilities/performance_test/seeder/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/performance_test/seeder/README.md)","tokens":300,"sizeBytes":245},{"name":"README.md","path":"tools/software/vulnerabilities/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/README.md","title":"vulnerabilities Documentation","category":"plugin-manifest","format":"markdown","content":"# vulnerabilities Documentation\n\nPath: `tools/software/vulnerabilities/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/software/vulnerabilities/README.md)","tokens":300,"sizeBytes":206},{"name":"README.md","path":"tools/team-builder/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/team-builder/README.md","title":"team-builder Documentation","category":"plugin-manifest","format":"markdown","content":"# team-builder Documentation\n\nPath: `tools/team-builder/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/team-builder/README.md)","tokens":300,"sizeBytes":179},{"name":"README.md","path":"tools/telemetry/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/README.md","title":"telemetry Documentation","category":"plugin-manifest","format":"markdown","content":"# telemetry Documentation\n\nPath: `tools/telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/telemetry/README.md)","tokens":300,"sizeBytes":170},{"name":"README.md","path":"tools/terraform/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/README.md","title":"terraform Documentation","category":"plugin-manifest","format":"markdown","content":"# terraform Documentation\n\nPath: `tools/terraform/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/terraform/README.md)","tokens":300,"sizeBytes":170},{"name":"README.md","path":"tools/test-certs/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-certs/README.md","title":"test-certs Documentation","category":"plugin-manifest","format":"markdown","content":"# test-certs Documentation\n\nPath: `tools/test-certs/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-certs/README.md)","tokens":300,"sizeBytes":173},{"name":"README.md","path":"tools/test-orbit-mtls/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-orbit-mtls/README.md","title":"test-orbit-mtls Documentation","category":"plugin-manifest","format":"markdown","content":"# test-orbit-mtls Documentation\n\nPath: `tools/test-orbit-mtls/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/test-orbit-mtls/README.md)","tokens":300,"sizeBytes":188},{"name":"README.md","path":"tools/tuf/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/README.md","title":"tuf Documentation","category":"plugin-manifest","format":"markdown","content":"# tuf Documentation\n\nPath: `tools/tuf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/README.md)","tokens":300,"sizeBytes":152},{"name":"README.md","path":"tools/tuf/status/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/status/README.md","title":"status Documentation","category":"plugin-manifest","format":"markdown","content":"# status Documentation\n\nPath: `tools/tuf/status/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/status/README.md)","tokens":300,"sizeBytes":169},{"name":"README.md","path":"tools/tuf/test/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/README.md","title":"test Documentation","category":"plugin-manifest","format":"markdown","content":"# test Documentation\n\nPath: `tools/tuf/test/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/tuf/test/README.md)","tokens":300,"sizeBytes":163},{"name":"README.md","path":"tools/upgrade/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/upgrade/README.md","title":"upgrade Documentation","category":"plugin-manifest","format":"markdown","content":"# upgrade Documentation\n\nPath: `tools/upgrade/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/upgrade/README.md)","tokens":300,"sizeBytes":164},{"name":"README.md","path":"tools/webhook/README.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/webhook/README.md","title":"webhook Documentation","category":"plugin-manifest","format":"markdown","content":"# webhook Documentation\n\nPath: `tools/webhook/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/tools/webhook/README.md)","tokens":300,"sizeBytes":164},{"name":"fleet-security-auditor.md","path":".claude/agents/fleet-security-auditor.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/fleet-security-auditor.md","title":"Subagent: fleet-security-auditor","category":"subagent-persona","format":"markdown","content":"# Subagent: fleet-security-auditor\n\nPath: `.claude/agents/fleet-security-auditor.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/fleet-security-auditor.md)","tokens":300,"sizeBytes":209},{"name":"frontend-reviewer.md","path":".claude/agents/frontend-reviewer.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/frontend-reviewer.md","title":"Subagent: frontend-reviewer","category":"subagent-persona","format":"markdown","content":"# Subagent: frontend-reviewer\n\nPath: `.claude/agents/frontend-reviewer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/frontend-reviewer.md)","tokens":300,"sizeBytes":194},{"name":"go-reviewer.md","path":".claude/agents/go-reviewer.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/go-reviewer.md","title":"Subagent: go-reviewer","category":"subagent-persona","format":"markdown","content":"# Subagent: go-reviewer\n\nPath: `.claude/agents/go-reviewer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/agents/go-reviewer.md)","tokens":300,"sizeBytes":176},{"name":"apply.md","path":".claude/commands/opsx/apply.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/apply.md","title":"Command: /apply","category":"command-prompt","format":"markdown","content":"# Command: /apply\n\nPath: `.claude/commands/opsx/apply.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/apply.md)","tokens":300,"sizeBytes":172},{"name":"archive.md","path":".claude/commands/opsx/archive.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/archive.md","title":"Command: /archive","category":"command-prompt","format":"markdown","content":"# Command: /archive\n\nPath: `.claude/commands/opsx/archive.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/archive.md)","tokens":300,"sizeBytes":178},{"name":"explore.md","path":".claude/commands/opsx/explore.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/explore.md","title":"Command: /explore","category":"command-prompt","format":"markdown","content":"# Command: /explore\n\nPath: `.claude/commands/opsx/explore.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/explore.md)","tokens":300,"sizeBytes":178},{"name":"propose.md","path":".claude/commands/opsx/propose.md","rawUrl":"https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/propose.md","title":"Command: /propose","category":"command-prompt","format":"markdown","content":"# Command: /propose\n\nPath: `.claude/commands/opsx/propose.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/commands/opsx/propose.md)","tokens":300,"sizeBytes":178}],"systemPromptSnippet":"<yakaai_skills repo=\"fleetdm/fleet\">\n<!-- File: AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/AGENTS.md)\n\n<!-- File: .claude/rules/fleet-api.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/fleet-api.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-api.md)\n\n<!-- File: .claude/rules/fleet-database.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/fleet-database.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-database.md)\n\n<!-- File: .claude/rules/fleet-frontend.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/fleet-frontend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-frontend.md)\n\n<!-- File: .claude/rules/fleet-go-backend.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/fleet-go-backend.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-go-backend.md)\n\n<!-- File: .claude/rules/fleet-orbit.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/fleet-orbit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/rules/fleet-orbit.md)\n\n<!-- File: .claude/skills/ai-profile-test/SKILL.md (Tokens: ~1590 | Category: anthropic-skill) -->\n---\nname: ai-profile-test\ndescription: Propose a new prompt test case for the AI configuration profile generator's test suite and open a PR. Use when asked to \"add a profile generator test\", \"propose a prompt test case\", \"add a test prompt for AI profiles\", or when a generated profile came out wrong and the failure should become a regression test.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(node *), Bash(cd website && sails run *), Bash(cd website && npm run test-profile-generator *), Read, Grep, Glob, Edit, WebFetch, WebSearch\neffort: medium\n---\n\nAdd a test case to `website/profile-generator/configuration-profile-generator-cases.js` and open a PR. That file is shared by two runners: the mocha suite (`website/profile-generator/tests/configuration-profile-generator.test.js`, one `it()` per case) and the `test-llm-generated-configuration-profile` script (repeated runs with `--parallelTests`). Adding the case to `TEST_CASES` registers it with both — don't edit either runner. Arguments: $ARGUMENTS\n\nUsage: `/ai-profile-test \"<natural-language instruction>\" [csp|mobileconfig|ddm]`\n\n- The instruction is what an admin would type into the profile generator (e.g. `\"Disable the camera\"`). If not provided, ask for it.\n- The profile type is inferred from the instruction when obvious (Windows policy → `csp`; Apple → `mobileconfig` or `ddm`). Ask only if genuinely ambiguous.\n\n## Step 1: Branch off main\n\nThe test cases file only exists on `main` — your current branch (e.g. an RC branch) may not have it.\n\n```\ngit fetch origin\ngit checkout -b add-profile-test-<short-slug> origin/main\n```\n\n## Step 2: Check for existing coverage\n\nRead every entry in `TEST_CASES` in the cases file. If an existing case already exercises the same concrete setting — the same CSP policy node, mobileconfig payload key, or DDM setting key — with the same intended behavior, or a near-identical instruction, STOP and report the overlap to the user instead of opening a PR. Sweep by the exact key name (e.g. `RemovableDiskDenyWriteAccess`), not just by instruction wording.\n\nSharing a payload type or DDM declaration type alone is NOT duplicate coverage — the suite deliberately has multiple cases per declaration (e.g. `ddm-beta-enroll` and `ddm-beta-block` both use `softwareupdate.settings`; the two intelligence cases share `intelligence.settings`). A new setting inside an already-covered declaration or payload still needs its own case.\n\n## Step 3: Verify the mechanism against vendor docs\n\nDo NOT write assertions from memory — a plausible-but-wrong key produces a test that enforces the wrong output forever. Confirm the exact key names, casing, value types, and allowed values:\n\n- **csp**: Microsoft CSP reference (`learn.microsoft.com/en-us/windows/client-management/mdm/`) — exact OMA-URI node path, `Format`, allowed values.\n- **mobileconfig**: Apple's per-payload YAML schemas (`github.com/apple/device-management`, `mdm/profiles/` — e.g. `com.apple.applicationaccess.yaml`) — `PayloadType`, key names with exact casing, value types, allowed values. The rendered docs (`developer.apple.com/documentation/devicemanagement/profile-specific-payload-keys`) cover the same payloads but are JS-rendered; the YAML is easier to fetch and is the source the docs are built from.\n- **ddm**: Apple's declarative device management schemas (same repo, `declarative/declarations/`) — declaration `Type` and payload keys.\n\nKeep the URL(s) you verified against — they go in the PR body so the reviewer can check the assertions without redoing the research.\n\n## Step 4: Write the case\n\nRead the `CASES` comment above `TEST_CASES` first — it documents the assertion design. Then follow the file's conventions:\n\n- `id`: `<profileType>-<short-slug>`, unique across the file.\n- `instructions`: phrased the way an admin would type it, matching the tone of neighboring cases. Don't name the platform — the profile type implies it.\n- `expect`: substring assertions only (compared with all whitespace stripped):\n  - `mustContain` / `mustNotContain`: raw substrings.\n  - `mustContainElement` / `mustNotContainElement`: `[tag, value]` pairs, e.g. `['Format', 'int']` or `['key', 'autohide']` — XML only (csp and mobileconfig). They compile to `<tag>value</tag>` regexes, so in a DDM case they never match the JSON output and a `mustNotContainElement` silently passes. DDM cases express keys and values as raw `mustContain` / `mustNotContain` substrings like `'\"MinorPeriodInDays\":30'`, following the existing DDM cases.\n  - Bind a value to its key as one adjacent-pair substring — whitespace stripping makes `'<key>allowBookstore</key><true/>'` work. Asserting the key and the value separately lets a value elsewhere in the profile satisfy the check.\n  - `mustNotContainOutsideCdata`: `mustNotContain` with CDATA sections blanked first — for rules about the profile itself rather than a document it transports (e.g. `'<?xml'` in a CSP case whose CDATA carries a WLANProfile).\n  - Assert against the tempting wrong answers too: the lookalike key that doesn't do what the instruction asks, wrong casing, `bool` where the CSP wants `int`, an inverted value.\n- `readByEye`: only for properties assertions can't express (one dict per payload domain, distinct PayloadUUIDs, single-line CDATA). Omit otherwise.\n- Do NOT set `canary: true` — canaries are a curated set of exact-substring sentinel cases, not a flag for new proposals.\n- Append the case to the end of its profile-type section (`CSP` / `MOBILECONFIG` / `DDM`).\n\n## Step 5: Validate\n\nAlways: `node --check website/profile-generator/configuration-profile-generator-cases.js`\n\nIf a website dev environment with an Anthropic API key is available, run the case for real (it spends API money — a few cents per run). Either runner works; the mocha suite checks one generation (including the 10s latency budget), the script measures how often it passes:\n\n```\ncd website && sails_custom__anthropicSecret='…' npm run test-profile-generator -- --grep '<id>:'\ncd website && sails run test-llm-generated-configuration-profile --caseId=<id> --parallelTests=3\n```\n\nSkipping this when the environment isn't available is fine — but the PR body must say whether the case was run against the live model or not.\n\n## Step 6: Open the PR\n\n1. Commit with a subject like `Website: Add profile generator test case for <thing>`.\n2. Push and open a PR against `main` with the body built from `.github/pull_request_template.md` (the `check-pr-template` CI check fails freeform descriptions).\n3. The body must include: what the case asserts and why, the vendor doc URL(s) from Step 3, whether the case was run against the live model, and the `sails run … --caseId=<id> --parallelTests=5` command for the reviewer.\n\n<!-- File: .claude/skills/aikido-tickets/SKILL.md (Tokens: ~1798 | Category: anthropic-skill) -->\n---\nname: aikido-tickets\ndescription: Create GitHub issues in fleetdm/confidential for Aikido pen test findings. Use when asked to \"create aikido tickets\", \"aikido ticket\", or \"create pen test tickets\".\nallowed-tools: Bash(gh *), Bash(jq *), Read, Grep, Glob, Agent, Write\nmodel: sonnet\neffort: high\n---\n\n# Create Aikido Pen Test Tickets\n\nCreate GitHub issues in `fleetdm/confidential` for Aikido penetration test findings.\n\n## Prerequisites\n\nBefore starting, walk the user through these steps:\n\n### 1. Export the Aikido report\n\nThe user needs to download the pen test report PDF from Aikido:\n\n1. Go to the Aikido assessment page (e.g., `app.aikido.dev/ai-pentests/projects/.../assessments/.../issues`)\n2. Click the purple **\"Download Report\"** button in the top-right corner\n3. Select **\"Detailed Auditor Report\"** (this contains every finding with technical details and remediation steps)\n4. Click **Continue** and save the downloaded PDF\n5. Provide the path to the downloaded PDF\n\n### 2. GitHub project board permissions\n\nAdding issues to project boards requires the `project` scope on the GitHub CLI token. Test by running:\n\n```bash\ngh project list --owner fleetdm --limit 1\n```\n\nIf this fails with a scope error, the user needs to run interactively:\n\n```bash\ngh auth refresh -s project -h github.com\n```\n\n**Alternative:** If the user cannot or prefers not to grant project scope, skip the project board step. The issues will still be created with correct labels and assignment. The user (or their manager) can manually drag them into the correct project board column afterward.\n\n## Inputs\n\nAsk the user for these if not provided:\n\n- **Pen test PDF report path:** Path to the downloaded Aikido detailed auditor report PDF\n- **PT ID(s):** Which PT-* findings to create tickets for (specific IDs, a range, or \"all\")\n- **Team:** Which team owns the findings (determines labels, project board, and parent story)\n- **Assignee:** GitHub username to assign the tickets to\n- **Parent story:** The confidential issue number that tracks these findings (e.g., #16715)\n\n## Teams and project boards\n\n| Team | Label | GitHub Project |\n|------|-------|----------------|\n| Orchestration | `#g-orchestration` | https://github.com/orgs/fleetdm/projects/71/ |\n| Supply Chain | `#g-supply-chain` | https://github.com/orgs/fleetdm/projects/97/ |\n| MDM | `#g-mdm` | https://github.com/orgs/fleetdm/projects/58/ |\n| Software | `#g-software` | https://github.com/orgs/fleetdm/projects/70/ |\n| First Impressions | `#g-first-impressions` | https://github.com/orgs/fleetdm/projects/105/ |\n\nIf the user specifies a team not listed here, ask for the team label and project URL/number.\n\n## Ticket format\n\n### Title\n```\nAikido-PT-{number} [{SEVERITY}]: {concise title from the finding}\n```\n\n### Body structure\n\n```markdown\n## {concise title}\n\n{1-2 sentence explanation of what is wrong}\n\nSee full details below.\n\n### Attack path\n\n{Concise but complete description of how an attacker exploits this vulnerability}\n\n### Fix\n\n**Option 1 (recommended):** {Best fix approach described concisely}\n\n{Only add Option 2, Option 3 etc. if there are genuinely different viable approaches. If one fix is clearly best, only list that one.}\n\n---\n\n**Aikido ref:** PT-{number} | CVSS {score} | `{primary affected file}`\n**Parent story:** #{parent_story_number}\n\n---\n\n<details>\n<summary>Aikido pen test details (PT-{number})</summary>\n\n{Full content from the Aikido PDF report for this finding, including:}\n### Description\n{original description}\n\n### Business impact\n{original business impact}\n\n### How to exploit\n{all exploit steps with code blocks}\n\n### Remediation\n{all remediation bullets from the report}\n\n### References\n{CVSS score and vector}\n\n</details>\n```\n\n## Process\n\n1. **Read the finding** from the pen test PDF report. Locate each finding by its `PT-{N}` header rather than guessing page numbers. Scan for `2.3.X PT-{N} - {Title}` headers in the detailed findings section (starts around page 15). Read pages in chunks to find the right section.\n\n2. **Write the ticket body** following the format above:\n   - The top section (title, explanation, attack path, fix) is YOUR synthesis of the finding, written concisely\n   - The foldable `<details>` section at the bottom contains the ORIGINAL Aikido report content verbatim\n\n3. **Write the body to a temp file and create the issue:**\n   ```bash\n   # Write body to temp file to avoid shell escaping issues\n   cat > /tmp/aikido-pt-{N}.md << 'BODY'\n   {body content}\n   BODY\n\n   gh issue create --repo fleetdm/confidential \\\n     --title \"Aikido-PT-{N} [{SEVERITY}]: {title}\" \\\n     --assignee {assignee} \\\n     --label \"bug,~security,~vulnerability-management,{team_label},p3\" \\\n     --body-file /tmp/aikido-pt-{N}.md\n   ```\n\n4. **Add to the correct project board and set status to Ready:**\n   ```bash\n   # Get project node ID\n   PROJECT_NODE_ID=$(gh api graphql -f query='{ organization(login: \"fleetdm\") { projectV2(number: {project_number}) { id } } }' | jq -r '.data.organization.projectV2.id')\n\n   # Add to project\n   ITEM_ID=$(gh project item-add {project_number} --owner fleetdm --url {issue_url} --format json | jq -r '.id')\n\n   # Get Status field ID and Ready option ID\n   READY_INFO=$(gh project field-list {project_number} --owner fleetdm --format json | jq '.fields[] | select(.name == \"Status\")')\n   STATUS_FIELD_ID=$(echo \"$READY_INFO\" | jq -r '.id')\n   READY_OPTION_ID=$(echo \"$READY_INFO\" | jq -r '.options[] | select(.name | test(\"Ready\")) | .id')\n\n   # Set to Ready\n   gh project item-edit --project-id $PROJECT_NODE_ID --id $ITEM_ID --field-id $STATUS_FIELD_ID --single-select-option-id $READY_OPTION_ID\n   ```\n\n   If the project scope is not available, inform the user that tickets were created but need to be manually added to the project board.\n\n5. **Report** the created issue URL to the user.\n\n## Batch creation\n\nWhen creating many tickets at once, delegate to subagents via the `Agent` tool. Launch the whole batch of subagents in a single message so findings are processed concurrently.\n\nSplit the requested findings into groups of ~5-7 and spawn one subagent per group (aim for 5-6 subagents at a time). Give each subagent its assigned `PT-{N}` list and instruct it to:\n\n- Locate each finding by its `PT-{N}` header and read those pages of the PDF\n- Draft the ticket body and write it to a temp file\n- Create the issue with `--body-file`, correct labels, and assignee\n- Add each issue to the project board and set status to Ready\n- Return the created issue URLs (and any failures) so the run is resumable\n\n## Important notes\n\n- All tickets go in `fleetdm/confidential` (private repo) since they contain security findings\n- Always use `p3` priority label unless the user specifies otherwise\n- Always use `bug` label (not `story`)\n- The foldable `<details>` section preserves the full Aikido evidence for reference\n- When creating many tickets, read the PDF pages for each finding to get accurate details\n- For the Fix section: if one fix is clearly the best, only list that one. Only list multiple options if there are genuinely different viable approaches\n- Fetch project field IDs at runtime rather than hardcoding, since they can change across projects\n\n<!-- File: .claude/skills/api-design-check/references/conventions.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/api-design-check/references/conventions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/api-design-check/references/conventions.md)\n\n<!-- File: .claude/skills/api-design-check/SKILL.md (Tokens: ~1249 | Category: anthropic-skill) -->\n---\nname: api-design-check\ndescription: Check a proposed or changed Fleet REST API endpoint against existing API conventions (URL shape, parameter names, pagination, response envelope, status codes, Fleets/Reports naming, Premium markers, api_endpoints.yml). Use when asked to \"check API conventions\", \"review this API design\", \"is this endpoint consistent\", or when reviewing a reference-docs PR labeled ~api-or-yaml-design.\nallowed-tools: Read, Grep, Glob, Bash\neffort: high\n---\n\n# Check an API design against existing Fleet conventions\n\nTarget: $ARGUMENTS\n\nThe target can be a PR number, a branch, a spec file, or a pasted endpoint. With no target, use the current branch's diff against `main`.\n\nFleet has no written API style guide. The rule is \"be consistent with what's already there\", so this check compares the proposal with **real existing endpoints**. `references/conventions.md` records the patterns that are hard to infer from a single neighbor.\n\n## 1. Collect the proposed endpoints\n\n- **Docs PR or branch**: diff `docs/API/rest-api.md` (and `docs/Contributing/reference/api-for-contributors.md` for internal endpoints). Each endpoint is a `### Heading`, then a `` `METHOD /api/v1/fleet/...` `` line, then `#### Parameters`, `#### Example`, and `##### Default response`.\n- **Code**: diff `server/service/handler.go` and `ee/server/service/handler.go` for new `ue.GET/POST/PATCH/PUT/DELETE` registrations. Read the matching request and response structs for the parameter and response field names.\n- **Spec or pasted text**: read the endpoint definitions directly.\n\nFor each endpoint, write down: the method, the path, the parameters (name, type, `in`), the response body keys, the status code, and whether it's Premium.\n\n## 2. Find the closest existing endpoints\n\nFor each proposed endpoint, find 2–4 existing endpoints to compare it with, in `docs/API/rest-api.md`. Use them in this order:\n\n1. The same resource with a different verb. For a new `PATCH /fleet/foo/:id`, compare `GET /fleet/foo/:id` and `POST /fleet/foo`.\n2. The same kind of operation on a sibling resource. A new list endpoint is compared with other `List ...` endpoints, a host-scoped action with other `POST /hosts/:id/...` actions, and a Fleet Desktop endpoint with other `/device/:token/...` endpoints.\n3. Recently added endpoints over old ones when they disagree. Check with `git log -S '<path>' --format='%h %ad' --date=short -- \"docs/API/rest-api.md\"`. Older endpoints are often the inconsistent ones.\n\nQuote the neighbor you compared against in each finding. A finding with no existing endpoint as evidence is an opinion, so drop it or label it as one.\n\n## 3. Check each dimension\n\nGo through `references/conventions.md` section by section. At minimum, check these:\n\n- **URL**: the resource noun and its plural form, snake_case, path parameter names, and where it sits in the hierarchy (`/hosts/:id/...`, `/device/:token/...`, `/spec/...`, `.../batch`).\n- **Method and verb**: the HTTP method matches the heading verb (List/Get/Create/Add/Update/Delete), and actions are `POST` to a sub-path.\n- **Parameters**: the names and types of shared parameters (`fleet_id`, `page`, `per_page`, `order_key`, `order_direction`, `after`, `query`, `platform`, `labels_include_any`, ...), and that `In` (path/query/body/form) is correct. A path parameter documented as `body` is a doc bug.\n- **Response**: the list envelope (`{\"<plural>\": [...], \"meta\": {...}}` and/or `count`), the single-object shape (a bare object or wrapped in `{\"<singular>\": {...}}`, matching the resource's other endpoints), IDs as integers, timestamps as RFC 3339 UTC, and snake_case keys.\n- **Status codes**: 200 for normal success, 202 for queued or async host actions, 204 for no body, and 201 only for SCIM. Error codes should match the semantics neighbors use (409 conflict, 422 validation, 404 not found).\n- **Terminology**: new names use `fleet`/`fleets` and `report`/`reports`, never `team`/`query` in the product sense. Renamed fields need the `renameto` alias in code.\n- **Premium and auth**: the `_Available in Fleet Premium._` marker on Premium-only parameters and endpoints, and a documented non-default auth (node key, device token).\n- **Registration**: the new endpoint is listed in `server/api_endpoints/api_endpoints.yml` with a display name that matches the doc heading.\n- **Doc structure**: the section order, a `Default response` with `Status:`, an example that uses realistic IDs, and a link from the section's table of contents.\n\n## 4. Report\n\nGroup the findings like this:\n\n1. **Inconsistent**: the proposal deviates from a clear majority pattern. Show the proposed value, the existing convention, and 1–2 neighbor endpoints as evidence.\n2. **Split convention**: existing endpoints disagree (`conventions.md` marks these). Don't pick a winner. Name both patterns and say that it's a call for the API design DRI.\n3. **Doc nits**: wrong `In` column, a missing `Status:` line, an anchor not in the TOC, and so on.\n\nKeep it short: one line per finding plus the evidence. If a dimension is consistent, don't list it. End by saying which endpoints were compared.\n\nDon't edit files or post on GitHub. This is a read-only check.\n\n<!-- File: .claude/skills/bump-migration/SKILL.md (Tokens: ~525 | Category: anthropic-skill) -->\n---\nname: bump-migration\ndescription: Bump a database migration's timestamp to the current time. Required when a PR's migration is older than one already merged to main. Use when asked to \"bump migration\", \"update migration timestamp\", or when a migration ordering conflict is detected.\nallowed-tools: Bash(go run *), Bash(make dump-test-schema*), Bash(git diff*), Bash(ls *), Read, Grep, Glob\nmodel: sonnet\neffort: medium\n---\n\n# Bump a database migration timestamp\n\nBump the migration: $ARGUMENTS\n\n## When to use\n\nThis is required when a PR has a database migration with a timestamp older than a migration already merged to main. This happens when a PR has been pending merge for a while and another PR got merged with a more recent migration.\n\n## Process\n\n### 1. Identify the migration to bump\n\nIf the user provided a filename, use that. Otherwise, find migrations on this branch that are older than the latest on main:\n\n```bash\n# List migrations on this branch that aren't on main\ngit diff origin/main --name-only -- server/datastore/mysql/migrations/tables/\n```\n\n### 2. Run the bump tool\n\nThe tool lives at `tools/bump-migration/main.go`. Run it from the repo root:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go\n```\n\nThis will:\n- Rename the migration file with a new current timestamp\n- Rename the test file (if it exists)\n- Update all function names inside both files (`Up_OLDTS` → `Up_NEWTS`, `Down_OLDTS` → `Down_NEWTS`, `TestUp_OLDTS` → `TestUp_NEWTS`)\n\n### 3. Optionally regenerate the schema\n\nIf the migration affects the schema, add `--regen-schema` to also run `make dump-test-schema`:\n\n```bash\ngo run tools/bump-migration/main.go --source-migration YYYYMMDDHHMMSS_MigrationName.go --regen-schema\n```\n\n### 4. Verify\n\n- Check that the old files are gone and new files exist with the updated timestamp\n- Verify the function names inside the files match the new timestamp\n- Run `go build ./server/datastore/mysql/migrations/...` to check compilation\n\n## Rules\n- Always run from the repo root\n- Provide the migration filename, not the test filename\n- The tool handles both the migration and its test file automatically\n\n<!-- File: .claude/skills/cherry-pick/SKILL.md (Tokens: ~816 | Category: anthropic-skill) -->\n---\nname: cherry-pick\ndescription: Cherry-pick a merged PR into the current RC branch. Use when asked to \"cherry-pick\", \"cp into RC\", or after merging a PR that needs to go into the current release.\nallowed-tools: Bash(git *), Bash(gh pr *), Bash(gh api *), Read, Grep, Glob\neffort: low\n---\n\nCherry-pick a merged PR into the current RC branch. Arguments: $ARGUMENTS\n\nUsage: `/cherry-pick <PR_NUMBER> [RC_BRANCH]`\n\n- `PR_NUMBER` (required): The PR number to cherry-pick (e.g. `43078`). If not provided, ask the user.\n- `RC_BRANCH` (optional): The target RC branch name (e.g. `rc-minor-fleet-v4.83.0`). If not provided, auto-detect the most recent one.\n\n## Step 1: Ensure main is up to date\n\n1. `git fetch origin`\n2. `git checkout main`\n3. `git pull origin main`\n\n## Step 2: Identify the RC branch\n\nIf an RC branch was provided as the second argument, use it (but still confirm with the user before proceeding).\n\nOtherwise, auto-detect by listing both minor and patch RC branches:\n\n```\ngit for-each-ref 'refs/remotes/origin/rc-minor-fleet-v*' 'refs/remotes/origin/rc-patch-fleet-v*' --format='%(refname:strip=3)' | grep -E '^rc-(minor|patch)-fleet-v[0-9]+\\.[0-9]+\\.[0-9]+$' | sort -V\n```\n\nFrom the results, suggest the most recent `rc-minor-fleet-v*` branch as the default. If patch branches also exist, mention them as alternatives. **Always ask the user to confirm the target RC branch before proceeding.**\n\n## Step 3: Get the merge commit and GitHub username\n\n1. Get the PR title:\n   ```\n   gh pr view <PR_NUMBER> --json title --jq .title\n   ```\n2. Get the merge commit SHA:\n   ```\n   gh pr view <PR_NUMBER> --json mergeCommit --jq .mergeCommit.oid\n   ```\n   If this returns `null` or an empty value, the PR is not yet merged. Tell the user and stop.\n3. Get the GitHub username: `gh api user --jq .login`\n\n## Step 4: Cherry-pick onto a new branch\n\n1. Create a new branch off the RC branch:\n   ```\n   git checkout -b <github-username>/<short-description>-cp origin/<rc-branch>\n   ```\n   Derive `<short-description>` from the PR title (lowercase, hyphens, keep it short — 3-5 words max).\n2. Check whether the commit is a merge commit by inspecting its parents:\n   ```\n   git rev-list --parents -n 1 <merge-commit-SHA>\n   ```\n   If the commit has multiple parents, run:\n   ```\n   git cherry-pick -m 1 <merge-commit-SHA>\n   ```\n   Otherwise (squash-merged or rebased), run:\n   ```\n   git cherry-pick <merge-commit-SHA>\n   ```\n3. If there are conflicts, stop and tell the user which files conflict. Do NOT attempt to resolve them automatically.\n\n## Step 5: Push and open PR\n\n1. Push the branch: `git push -u origin HEAD`\n2. Open a PR targeting the RC branch (NOT main):\n   ```\n   gh pr create --base <rc-branch> --title \"Cherry-pick #<PR_NUMBER>: <original-title>\" --body \"$(cat <<'EOF'\n   Cherry-pick of #<PR_NUMBER> into the RC branch.\n   EOF\n   )\"\n   ```\n3. Report the PR URL to the user.\n\n<!-- File: .claude/skills/command-palette/SKILL.md (Tokens: ~750 | Category: anthropic-skill) -->\n---\nname: command-palette\ndescription: Authoring guide for the Fleet command palette. Use when adding or editing items in frontend/components/CommandPalette/groups/, when editing frontend/router/paths.ts or frontend/router/index.tsx, or when adding a new top-level page, global create action, MDM connector / singleton config, automation hook, or picker action that needs a palette entry.\nallowed-tools: Read, Grep, Glob, Bash(yarn test*)\neffort: medium\n---\n\n# Command palette authoring\n\nThe canonical guide lives in **`frontend/docs/patterns.md` § Command palette** — read that first. It covers what belongs (and what doesn't), the group-to-file mapping, required/optional fields, label conventions, the full keyword/synonym checklist, permission gating, `teamName` chips, search-only items, and test expectations.\n\nThis skill exists to make sure that guide gets followed when palette-worthy changes land.\n\n## Before adding an item\n\n1. **Read `frontend/docs/patterns.md` § Command palette** end to end.\n2. **Grep the target group file** for similar existing items. Match their shape — field order, keyword style, gating, `teamName` helper usage — instead of inventing a new pattern. The groups are the source of truth for current conventions:\n   ```\n   frontend/components/CommandPalette/groups/\n   ```\n3. **Confirm the destination page's own permission check**, then mirror it on the palette item using a flag from `ICommandPaletteContext` (`frontend/components/CommandPalette/helpers.ts`). Add a new flag there only if no existing one models the destination's check. Don't route users to a screen they can't use.\n4. **Premium paywall check:** if the destination page (or the specific tab/section the link lands on) renders `<PremiumFeatureMessage />` for `!isPremiumTier`, gate the palette item on `isPremiumTier` so it's hidden on Free. A palette entry that lands on the upsell wall is a bait-and-switch — the palette is for actions, not for marketing the paid tier. Mirror tab-level paywalls too (e.g., `paths.ADMIN_INTEGRATIONS_SSO_END_USERS` lands on a Premium-only tab even though the parent SSO page works on Free). If the destination only paywalls a sub-section (not the whole page or the linked tab), don't gate — the page is still useful on Free.\n\n## After adding an item\n\n1. **Update `frontend/components/CommandPalette/helpers.tests.ts`**:\n   - Assert the item appears for the right roles and hides for the wrong ones\n   - If premium-only: assert absence in the `Fleet Free (isPremiumTier: false)` block\n   - If hidden in primo mode: add to the `Primo Mode (isPrimoMode: true)` block\n   - If it sets a `teamName` chip: assert it renders / doesn't render against the relevant fleet contexts\n2. Run the palette tests:\n   ```\n   yarn test frontend/components/CommandPalette/helpers.tests.ts\n   ```\n   (Note: test files use `.tests.ts` plural, and `yarn test` — not `yarn jest` — uses the project's jest config.)\n\n## When *not* to add an entry\n\n- Per-entity edit / delete operations (the entity is already in scope on its row or detail page)\n- Bulk-select operations that depend on an existing selection\n- One-off UI affordances (toggles, expanders) tied to a single view\n\nSee patterns.md for the dividing line and the full \"doesn't belong\" list.\n\n<!-- File: .claude/skills/content-style/references/content-types.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/content-style/references/content-types.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/content-types.md)\n\n<!-- File: .claude/skills/content-style/references/positioning.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/content-style/references/positioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/positioning.md)\n\n<!-- File: .claude/skills/content-style/references/style-rules.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/content-style/references/style-rules.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/content-style/references/style-rules.md)\n\n<!-- File: .claude/skills/content-style/SKILL.md (Tokens: ~1605 | Category: anthropic-skill) -->\n---\nname: content-style\ndescription: Write, edit, and review any public-facing or customer/prospect-facing Fleet content so it follows Fleet's writing, brand, voice, and style guidelines. Use this whenever you create or change the words in website copy (fleetdm.com), handbook pages, docs, guides, tutorials, articles, blog posts, announcements, release notes, product UI text and microcopy, GitHub issues about content, or marketing and sales enablement material, even if the user never says \"style guide.\" Trigger on edits under website/, handbook/, docs/, articles/, and on requests like \"write a blog post,\" \"draft an announcement,\" \"review this guide for style,\" \"make this sound like Fleet,\" \"tighten this up,\" or \"clean up this copy.\" This skill is for authoring and editing prose for voice, brand, and style. It does not apply to writing code, tests, scripts, commit messages, or internal team chat, even when those happen to mention articles, announcements, blog posts, or UI strings.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet content style\n\nProduce and refine written content that sounds like Fleet: radically honest, technically precise, and \"Mister Rogers\" kind. The reader is an IT professional, client platform engineer, or security practitioner. Write to them as a helpful expert peer, never as a salesperson.\n\nThis skill works both inside the Fleet repo and outside it. The rules below are self-contained, but when the handbook is present it is the source of truth — read it first so you always reflect the latest guidance.\n\n## When you start\n\n1. **Identify the content type and the mode.** Type drives format discipline: website copy, guide/tutorial, article/blog, announcement, docs reference, product UI text, or marketing/sales enablement. Mode is either *writing new* content or *reviewing/editing existing* content. If the type or intended placement is unclear, ask — don't guess, because format rules differ by type.\n\n2. **Load the canonical guidelines if they exist.** When working in a repo that contains them, read these before writing, since they may have been updated since this skill was written:\n   - `handbook/company/writing.md` — the full writing guide: style, headings, links, lists, and numbers (start here)\n   - `handbook/company/brand.md` — visual brand, naming, imagery\n   If they aren't present (e.g. drafting external copy), use the embedded rules below.\n\n3. **For marketing and sales content, align positioning.** Read `references/positioning.md` — a brief distilled from the \"Implicating the pain\" positioning doc and the \"Fleet for IT engineers and admins\" sales deck (links inside). It covers the audience's pains, the \"implicate the pain\" narrative method, Fleet's differentiators, and messaging do's and don'ts. Treat its proof points as needing verification: never publish a stat, customer quote, or named claim without confirming it against a public, approved source, and ask the user if you can't.\n\n4. **Read the full rules for anything non-trivial.** `references/style-rules.md` has the complete mechanics with examples; `references/content-types.md` has per-type format discipline and the article/guide/announcement endmatter templates. The checklist below is the fast path, not the whole story.\n\n## The core of Fleet's voice\n\n- **Plain English, short sentences, active voice.** One idea per sentence. If a sentence runs past ~20 words, split it. \"Fleet manages hosts,\" not \"Hosts are managed by Fleet.\"\n- **Imperative mood for instructions.** \"Click **Save**,\" not \"You should click Save.\"\n- **Clarity over cleverness.** If a sentence is clever but obscures meaning, rewrite it. The goal is for the reader to understand, not for the writer to look smart.\n- **Radical honesty.** State bugs, limitations, and gaps plainly. Never use marketing spin to hide them.\n- **No snark, no hype.** Treat the reader as an equal. Never condescending, edgy, or sarcastic.\n\n## High-frequency rules (the fast checklist)\n\nThese are the rules content most often gets wrong. Apply them on every pass.\n\n- **Sentence case everywhere** — headings, subheadings, buttons, UI labels. \"Host details,\" not \"Host Details.\" Only proper nouns, acronyms, and self-styled names (macOS, osquery) keep their casing.\n- **Commas, not em dashes.** Avoid em dashes entirely. Use a comma, a colon, or a new sentence. This is the single most common AI tell to strip.\n- **Oxford comma, always.** \"macOS, Windows, and Linux.\"\n- **Bold UI elements only.** \"Navigate to **Hosts**.\" Never bold for emphasis or to decorate. Excessive bolding is an AI tell.\n- **Cut filler.** Delete \"very,\" \"really,\" \"actually,\" \"basically,\" \"essentially,\" and \"just.\" Use common words: \"help,\" not \"facilitate.\"\n- **No hyperbole.** Strip \"revolutionary,\" \"game-changing,\" \"seamless,\" \"powerful,\" \"robust,\" \"unprecedented,\" \"industry-leading,\" \"best-in-class.\"\n- **Fleet naming.** The product and company are **Fleet** (or Fleet Device Management) — never \"FleetDM,\" \"fleetDM,\" or \"fleetdm\" in prose. Lowercase `osquery`, `fleetctl`, `fleetd` (rewrite the sentence if one would start it). Capitalize Fleet Desktop and Orbit.\n- **Preferred terms.** Use \"hosts,\" \"devices,\" \"computers,\" \"Fleet UI,\" \"Fleet server.\" Avoid \"agents\" and \"nodes.\" Prefer \"device\" over \"endpoint.\"\n- **No fabrication.** Never invent features, URLs, names, dates, version numbers, or CLI commands. If you don't have something you need, ask — it's better not to know than to make it up.\n- **Strip AI intros.** No \"In the rapidly evolving world of…,\" no throat-clearing. Lead with the substance.\n\n## Writing mode\n\nDraft directly in the target format and apply the rules as you write — don't write loose prose and clean it up after. Lead with the \"why\" before the \"how.\" Match the format discipline for the content type (see `references/content-types.md`): guides get numbered steps, announcements lead with the news, website copy is scannable and benefit-focused, articles are conversational but professional.\n\nBefore presenting a draft, do one self-review pass against the checklist above, reading specifically for em dashes, over-bolding, filler, hype, and sentence-case slips — these survive even careful first drafts.\n\n## Review / edit mode\n\nWhen the user hands you existing content (or you're editing files in a diff):\n\n1. Read the content and identify its type.\n2. Go through it against the checklist and the full rules, noting each issue with its location.\n3. Apply the fixes directly (Edit), or if the user wants a critique, report findings as a short list grouped by rule — quote the original, give the corrected version, and name the rule. Keep it specific and actionable; don't pad with praise.\n4. Preserve the author's meaning and technical accuracy. Style edits must never change facts. If a sentence is factually unclear, flag it rather than rewriting it into something that might be wrong.\n\nWhen in doubt, simplify.\n\n<!-- File: .claude/skills/find-related-tests/SKILL.md (Tokens: ~168 | Category: anthropic-skill) -->\n---\nname: find-related-tests\ndescription: Find test files and functions related to recent git changes. Suggests exact go test commands with correct env vars.\nallowed-tools: Bash(git *), Read, Grep, Glob\neffort: low\n---\n\nLook at my recent git changes (`git diff` and `git diff --cached`) and find all related test files.\n\nFor each modified file, find:\n1. The `_test.go` file in the same package\n2. Integration tests that exercise the modified code (check `server/service/integration_*_test.go` files)\n3. Any test helpers or fixtures that may need updating\n\nList the test files and suggest specific test functions to run with the exact `go test` commands, including the right env vars (MYSQL_TEST, REDIS_TEST, etc.).\n\n<!-- File: .claude/skills/fix-ci/SKILL.md (Tokens: ~1174 | Category: anthropic-skill) -->\n---\nname: fix-ci\ndescription: Diagnose and fix failing CI tests from a GitHub Actions run. Use when asked to \"fix CI\", \"CI failure\", or \"failing tests in CI\".\nallowed-tools: Bash(gh *), Bash(go test *), Bash(go build *), Bash(MYSQL_TEST*), Bash(MYSQL_TEST=1 REDIS_TEST=1 *), Bash(FLEET_INTEGRATION_TESTS_DISABLE_LOG=1 *), Read, Grep, Glob, Edit\nmodel: opus\neffort: high\n---\n\nFix failing tests from a CI run. The argument is a GitHub Actions run URL or run ID: $ARGUMENTS\n\n## Step 1: Identify failing jobs\n\nExtract the run ID from the URL (the numeric path segment after `/runs/`). Use `gh run view <run_id>` to list the jobs, then find the failing ones:\n\n```\ngh run view <run_id> --json jobs --jq '.jobs[] | select(.conclusion == \"failure\") | {name: .name, id: .databaseId}'\n```\n\nGroup the failing jobs by **test suite** (the first parenthesized token in the job name, e.g. `integration-core`, `integration-enterprise`, `service`, `mysql`, `main`). You only need to examine **one job per unique suite** since the matrix variants (OS, MySQL version) run the same tests.\n\n## Step 2: Find the failing tests in each suite\n\nFor each unique suite, fetch the job log and find the `FAIL: ` lines. IMPORTANT: use `gh api` (not `gh run view --log`, which may return empty):\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: ' | head -30\n```\n\nThis gives you the failing test function names and subtests. Ignore the parent test if subtests are listed (e.g. if `TestFoo` and `TestFoo/Bar` both appear, focus on `TestFoo/Bar`).\n\n## Step 3: Get error details\n\nFor each suite, fetch the error traces:\n\n```\ngh api repos/fleetdm/fleet/actions/jobs/<job_id>/logs 2>&1 | grep -e 'FAIL: \\|Error Trace\\|Error:\\|expected:\\|actual:' | head -60\n```\n\nThis tells you the exact file/line and what the assertion expected vs. what it got.\n\n## Step 4: Diagnose each failure\n\nFor each failing test, read the test code at the indicated file and line. Determine whether the failure is:\n\n**A) A stale test assertion** — the test expects an old string/value but the production code was intentionally changed. The test needs updating to match the new behavior. Signs:\n- The expected value is an old error message string and the actual value is a new one\n- The change aligns with the intent of the current branch's modifications\n- The production code change looks intentional\n\n**B) A legitimate test failure** — the test is correct but the code under test is buggy. The production code needs fixing. Signs:\n- The test's expected value matches the documented/intended behavior\n- The actual value indicates a regression or bug\n- The test was not related to any intentional change on this branch\n\n## Step 5: Fix stale assertions (category A)\n\nFor each stale assertion:\n1. Read the test file\n2. Update the assertion to match the new expected value\n3. Also search for **other assertions in the same file** that check similar strings — CI only catches the first failure per test, so there may be additional stale assertions that haven't failed yet. Use Grep to find them.\n4. Also check for **related assertions in other test files** for the same error message pattern\n\n## Step 6: Report legitimate failures (category B)\n\nFor each legitimate failure, report to the user:\n- The test name and file location\n- What the test expects vs. what it got\n- Your analysis of why the production code is producing the wrong result\n- The production code file/line that likely needs fixing\n\nDo NOT fix production code bugs without user approval — only report them.\n\n## Step 7: Verify fixes\n\nAfter fixing stale assertions, run the affected tests locally to verify they pass:\n\n- `pkg/spec/...` and `server/fleet/...`: `go test -run 'TestName' ./pkg/spec/...`\n- `server/service/...` (unit tests like devices_test.go, scripts_test.go): `go test -run 'TestName' ./server/service/`\n- `ee/server/service/...`: `go test -run 'TestName' ./ee/server/service/`\n- `server/datastore/mysql/...`: `MYSQL_TEST=1 go test -run 'TestName' ./server/datastore/mysql/`\n- Integration tests (`integration_core_test.go`, `integration_enterprise_test.go`, `integration_live_queries_test.go`): these require `MYSQL_TEST=1 REDIS_TEST=1` and take a long time, so just verify compilation with `go build ./...`\n\nAfter running tests, also do a proactive Grep scan for any remaining old assertion strings in test files that might break in CI even though they didn't show up in this run (CI stops at the first failure per test function).\n\n## Step 8: Report summary\n\nPresent a summary to the user:\n- Total failing suites and tests found\n- How many were stale assertions (fixed) vs. legitimate failures (reported)\n- List of files modified\n- Any remaining concerns or tests that couldn't be verified locally\n\n<!-- File: .claude/skills/fix-sql-parser/SKILL.md (Tokens: ~1676 | Category: anthropic-skill) -->\n---\nname: fix-sql-parser\ndescription: Fix the osquery SQL parser when it rejects a valid query (or accepts an invalid one). Use when a query is flagged as invalid in the query editor but runs fine in osquery, when asked to \"fix the SQL parser\", \"fix the grammar\", \"this query is valid but Fleet says syntax error\", or when a corpus knownFailure needs closing.\nallowed-tools: Bash(yarn *), Bash(npx *), Bash(sqlite3 *), Bash(make generate-osquery-sql-parser), Bash(node *), Bash(git diff*), Bash(git status*), Read, Edit, Grep, Glob\neffort: high\n---\n\n# Fix an osquery SQL parser bug\n\nQuery to fix: $ARGUMENTS\n\nThe parser lives in `frontend/utilities/osquery_sql_parser/`. Read that\ndirectory's `README.md` first — it is the source of truth for this workflow and\nfor what the grammar deliberately excludes. This skill is the executable\nversion of its \"Making a change\" section.\n\n## First: is it actually a bug?\n\nDo not skip this. Three things are rejected **on purpose**, and \"fixing\" them\nwould undo deliberate decisions:\n\n1. **Non-SELECT statements.** osquery is read-only. `INSERT`, `UPDATE`,\n   `DELETE`, `CREATE`, `DROP`, `ALTER`, `ATTACH`, `PRAGMA`, `EXPLAIN`,\n   `BEGIN` are parse errors by design. Never re-add statement types to\n   `crud_stmt`.\n2. **Bind parameters** (`?`, `:name`, `@name`, `$name`). Valid SQLite, but\n   nothing in Fleet supplies bindings, so an unbound parameter silently matches\n   nothing. Rejecting them is intentional.\n3. **MySQL/Postgres dialect** osquery has no equivalent for: `FOR UPDATE`,\n   `INTERVAL`, `@@variables`, `RLIKE`, `FROM DUAL`, `#` comments, `@>` and\n   other jsonb operators, `COLLATE =`. See the README's Provenance section for\n   the full list.\n\nThen confirm the query is valid for the engine, using real SQLite:\n\n```bash\nsqlite3 :memory: \"<the query>\"\n```\n\nA syntax error here means **the query is wrong, not the grammar** — say so and\nstop. (Errors about missing tables are expected and fine; osquery's tables\ndon't exist in a bare sqlite3. Only syntax errors matter.)\n\nIf the query is valid SQLite and isn't in one of the three excluded categories,\nit is a real bug. Continue.\n\n## 1. Reproduce against the grammar\n\n```bash\nyarn --silent peggy -t \"<the query>\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs\n```\n\nThe `SyntaxError` it prints carries a `location` (line/column) and an\n`expected` list. Together these tell you which rule gave up and what it wanted\n— that is the rule to widen. Note the column and read the SQL at that offset;\nthe failure is usually one token past the construct the grammar can't handle.\n\n## 2. Add the failing case to `corpus.json` and watch it fail\n\n`frontend/utilities/osquery_sql_parser/corpus.json` is hand-maintained. Add:\n\n```json\n{\"name\": \"short description of the construct\", \"query\": \"<the query>\"}\n```\n\nNo `expect` field means \"must parse\". If you are instead fixing the opposite\nproblem — the parser accepts something it shouldn't — add\n`\"expect\": \"reject\"` and a `note` saying why.\n\n**If the query is already in the corpus as a `knownFailure`, delete its\n`knownFailure` and `expect` fields now, before touching the grammar.** Left\nalone, that entry asserts the gap still exists, so it passes until your fix\nlands and then fails — backwards. Removing the fields is what makes it red.\n\nNow run the tests and **confirm they fail, naming your entry**:\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser\n```\n\nYou should see `✕ parses every query expected to parse` with your entry's name\nin the reported array. A red test for the right reason before any grammar edit\nis what proves the fix actually did something. If it passes here, either the\nquery already parses or the entry is wrong — investigate before continuing.\n\n## 3. Edit the grammar\n\nEdit only `osquery_sql.pegjs`. **Never** edit\n`osquery_sql_parser.generated.js`; it is gitignored and rebuilt from the\ngrammar.\n\nRules read like BNF: `rule = alt1 / alt2 { action }`. Notes:\n\n- `'FOO'i` matches case-insensitively\n- `__` is optional whitespace/comments\n- alternation order matters — longest match first\n- action blocks build the AST, so the grammar doubles as AST documentation\n\nPrefer the smallest widening that fixes the case: add an alternative to the\nrule that failed, rather than restructuring. If your change alters the shape of\nan AST node, check whether `frontend/utilities/sql_tools.ts`'s visitor needs to\nlearn it — that file walks the AST to extract table names.\n\n## 4. Test\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser frontend/utilities/sql_tools.tests.ts frontend/components/forms/validators/validate_query\n```\n\n`yarn test` regenerates the parser first via the `pretest` hook, always through\nthe lockfile-pinned peggy. Invoking jest directly does not — if you do, run\n`make generate-osquery-sql-parser` first or you test a stale parser.\n\nYour new entry should now pass.\n\n## 5. Check you did not widen too far\n\nThis is the step that catches real mistakes. A loosened rule can start\naccepting dialect syntax the grammar deliberately rejects, and the corpus is\nthe guard: it holds ~57 `expect: \"reject\"` entries covering exactly that.\n\n```bash\nyarn test frontend/utilities/osquery_sql_parser   # corpus: parse + reject + gaps\nnpx tsc --noEmit -p tsconfig.json\nyarn lint\n```\n\nThen spot-check the exclusions by hand — each of these must still be rejected:\n\n```bash\nfor q in \"INSERT INTO users (name) VALUES ('x')\" \"SELECT @@version\" \\\n         \"SELECT * FROM users FOR UPDATE\" \"SELECT 1 FROM users WHERE uid = ?\"; do\n  printf '%-45s ' \"$q\"\n  yarn --silent peggy -t \"$q\" frontend/utilities/osquery_sql_parser/osquery_sql.pegjs \\\n    >/dev/null 2>&1 && echo \"ACCEPTED - BUG, you widened too far\" || echo \"rejected (correct)\"\ndone\n```\n\nFinally, run the whole frontend suite, since `sql_tools` and the query\nvalidator feed several pages:\n\n```bash\nyarn test\n```\n\n## 6. Report\n\nTell the user:\n\n- the rule you changed and why that was the right one\n- the corpus entry you added\n- confirmation that the reject cases and full suite still pass\n\nCommit the grammar and `corpus.json` together. The generated parser is\ngitignored, so there is nothing else to commit. Do not add issue or PR numbers\nto comments in either file.\n\n## Rules\n\n- Verify against real `sqlite3` before changing the grammar. If SQLite rejects\n  the query, the query is the bug.\n- Red test first, always: corpus entry before grammar edit.\n- Only `osquery_sql.pegjs` is edited. The generated parser is never edited or\n  committed.\n- `crud_stmt` stays SELECT-only.\n- Do not delete or restructure unrelated rules while you are in there.\n- If the fix would require re-admitting a deliberate exclusion, stop and ask\n  rather than deciding for the user.\n\n<!-- File: .claude/skills/fleet-article-formatting/assets/article-template.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Assets Skill\n\nPath: `.claude/skills/fleet-article-formatting/assets/article-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-article-formatting/assets/article-template.md)\n\n<!-- File: .claude/skills/fleet-article-formatting/SKILL.md (Tokens: ~4045 | Category: anthropic-skill) -->\n---\nname: fleet-article-formatting\ndescription: Apply Fleet's house article format and article-specific voice to Fleet ARTICLES — blog pieces with meta category \"articles\" or \"comparison\" (thought-leadership, how-to, and comparison pieces). Use when writing a NEW article or editing, refreshing, or tightening an EXISTING one, even if the user doesn't say \"use the format.\" Governs structure and article-specific voice; pair with content-style for word-level voice. Do NOT use for guides, case studies, or announcements — those are separate content types with their own skills.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet article formatting\n\nThis skill governs article **structure and article-specific voice** — the section order, the key-takeaways pattern, the CTAs, and the honest-claims guardrails — for drafting new articles and bringing older ones up to standard. For word-level voice (sentence case, em dashes, filler, Fleet terminology, positioning), run the `content-style` skill over the prose. Apply both together on every article.\n\nThe format does one job: let a busy reader get the whole argument from the top of the page, then keep reading for the proof. \"Key takeaways\" and the CTA button sit immediately after the dek — before the intro — so a reader who scrolls no further still leaves with the argument and a next step. Every rule below serves that.\n\n## Content types\n\nFleet publishes several content types under `articles/`. This skill governs the **article** format only. Identify the type first (the `<meta name=\"category\" ...>` value is the routing signal), then apply the matching format. The canonical list of valid `category` values lives in [`website/scripts/build-static-content.js`](../../../website/scripts/build-static-content.js) (`validArticleCategories`); a fuller per-type explainer is in [`content-style/references/content-types.md`](../content-style/references/content-types.md).\n\n| Content type | What it is | `category` value(s) | Format governed by |\n|---|---|---|---|\n| **Article** | Thought-leadership, how-to, and comparison pieces in the house format (title → dek → key takeaways → CTA → body → closing) | `articles`, `comparison` | **this skill** (+ `content-style` for prose) |\n| **Guide** | Step-by-step operational how-to | `guides` | `fleet-guide-formatting` |\n| **Case study** | Customer story; requires summary/quote meta tags | `case study` | `fleet-case-study-formatting` |\n| **Announcement** | Product/news announcement | `announcements` | `content-style` |\n| Release notes, podcasts, webinars, whitepapers, reports | Other content types | `releases`, `podcasts`, `webinar`, `whitepaper`, `report`, … | out of scope here |\n\n**Scope follows from this table:** apply this skill when the piece is an **Article** — `category` is `articles` *or* `comparison`. Both use the same format; `comparison` differs only in routing (it sets `category=comparison` and carries extra routing meta tags — see the website build requirements). For any other type, stop and use the owning skill; flag the mismatch to the author rather than reshaping their piece.\n\n## The structure\n\nUse this skeleton for Fleet articles — thought-leadership posts, how-to articles, and comparison pieces. Not every article needs every section, but the order is fixed.\n\n```\n# Title (sentence case)\n*Italic dek — one or two sentences.*\n\n## Key takeaways\n- **Bold lead-in.** One to three sentences, outcome-first. (5–6 bullets.)\n\n<a purpose=\"cta-button\" href=\"https://fleetdm.com/relevant-page\">Short action label</a>\n\n[Intro — keep it short (about two short paragraphs); it opens the body proper.]\n\n## [Body section]\n### [Subsection]\n...\n\n## [Closing section]\n[Short recap or stakes, then the through-line.]\n\n## See it live\n[Optional next-steps block: a guide link plus one or two demo/workshop bullets.]\n```\n\n### Title\n\nSentence case, not Title Case. Lead with the reader's outcome or the tension, not the product name. \"How Fleet completes your Microsoft stack\" reads better than \"Fleet: The Complete Microsoft Integration Platform.\"\n\n### Dek (the italic line under the title)\n\nOne or two sentences, italicized. It frames the question the piece answers or the payoff the reader gets — it does not summarize the whole article. Think of it as the reason to keep reading. If the piece has a meta description, the dek can be a sharper, more human version of it.\n\n### Key takeaways — the heart of the format\n\n- Place it immediately after the dek, before the intro and the first body section. Nothing but the title and dek comes before it — the reader gets the whole argument at the very top of the page.\n- 5–6 bullets. Each bullet: `**Bold lead-in phrase.**` followed by one to three sentences.\n- **Lead with the business outcome, not the feature.** The bold phrase should state what's true for the reader or what they get (\"Fleet sees it across every OS, in real time\"), and the sentences explain why it matters. Avoid bullets that just name a feature.\n- **Each takeaway previews a body section** — there should be a rough one-to-one mapping. If a takeaway has no home in the body, either cut it or add the section.\n- **Preview, don't echo.** Do not copy a full sentence verbatim from the body into a takeaway. Say the same idea in different words. If the reader sees the identical sentence twice within a few hundred words, the takeaway reads as padding.\n- **Takeaways must stand alone.** Because they now precede the intro, they can't lean on any setup — each bullet has to make sense to a reader who has read only the title and dek.\n\n**Example of a strong takeaway (outcome-first, previews a section):**\n> **Governance is code, not console clicks.** Reports and policies live in Git as YAML, get reviewed in a pull request, and deploy through CI, so your AI governance posture is auditable and reversible instead of a click someone made six months ago.\n\n**Weaker version (feature-first, no stakes):**\n> **GitOps support.** Fleet supports managing policies and reports as YAML in Git with CI/CD.\n\n### CTA button after the key takeaways\n\nPlace a single call-to-action button directly after the key takeaways list, before the intro.\n\n- **Syntax:** `<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">Short action label</a>` — an established pattern that renders as Fleet's primary (green) button in the article body. Use a full `https://fleetdm.com/…` URL, as existing articles do.\n- **Make it relevant to the piece.** Match label and destination to the argument: \"See config-as-code in Fleet\" → `/infrastructure-as-code` for a config-as-code post, \"Compare features\" → `/pricing` for a comparison, \"Get a demo\" → `/contact` as the default.\n- **One button only.** The fuller menu of next steps belongs in the closing CTA, not here. If the closing block also offers \"Get a demo,\" vary the top button so the two CTAs aren't identical.\n\n### Intro\n\nThe intro comes **after** the CTA button and opens the body proper. Keep it short — aim for about two short paragraphs. It can be narrative (\"I've spent the last few months talking with teams…\") or direct (\"Your organization runs on Microsoft.\"), but it should end on a bridge that hands the reader into the first body section — a question, a stakes statement, or a \"here's where the answer lives\" line.\n\nBecause the takeaways have already summarized the argument, the intro doesn't need to — its job is to set up the problem and pull the still-reading reader into the body. If it runs past two paragraphs, fold the setup together and cut. Don't restate the takeaways in prose; that reads as padding coming right after them.\n\n### Body\n\n`##` for sections, `###` for subsections, all sentence case. Lead each section with its point, then support it. Use concrete, grounded specifics (real version numbers, real table names, real CVE-feed names) wherever you have them — specificity is what separates Fleet content from generic vendor copy.\n\nFor **integration or comparison pieces**, the cooperative \"Fleet + X\" section framing works well (e.g. \"Fleet + Microsoft Intune,\" \"Fleet + your SIEM\"): name the other tool, give it genuine credit for what it does well, then show precisely where Fleet adds depth. This reads as confident rather than defensive. (Thought-leadership and how-to pieces don't need this framing — use plain topic headers.)\n\n### Closing\n\nA short section that restates the stakes (\"The risk of waiting is real\") and lands the through-line. Do **not** re-list every key takeaway here — that's the most common bloat. One or two synthesizing sentences, then the closing line.\n\n### CTA\n\nFleet pieces typically carry two calls to action, and they play different roles:\n\n- **The post-takeaways button** (above) — one button, high on the page, for the reader who's already convinced.\n- **The closing CTA** — at the foot of the article, a fuller menu of next steps. This is a short \"See it live\" block (a guide link plus one or two bullets such as **Get a demo** → `/contact` and **Join a GitOps training session** → `/gitops-workshop`). Keep it to the actions that genuinely fit the piece; real links only. Don't add a horizontal rule or a trailing italic CTA line after it — the website renders its own divider below the article.\n\n### Endmatter\n\nEvery article ends with the `<meta>` block from [`content-style/references/content-types.md`](../content-style/references/content-types.md). Emit it as part of the draft; `assets/article-template.md` already carries it. Two fields need care:\n\n- `articleTitle` matches the H1 exactly, character for character.\n- **`description` must be 150 characters or fewer.** This is enforced by the website build, not a style preference: `website/scripts/build-static-content.js` throws `An article page has an invalid description meta tag` and fails the whole production build for any article over the limit. It applies to every content type that uses this endmatter, articles and comparisons included. Count the characters rather than eyeballing it, since a description that reads like one or two sentences lands near 150 more often than you'd expect. Trim words, don't drop the substance.\n\nNever fabricate `authorFullName`, `authorGitHubUsername`, or `publishedOn`. If you don't have them, leave the placeholders and tell the author which fields to fill in.\n\n## Voice and terminology\n\nFleet's voice is confident, specific, and honest. It respects the reader's intelligence and never oversells.\n\n### Terminology rules\n\n- **Say \"Fleet's agent\" or \"fleetd,\" not \"osquery,\"** in marketing and customer-facing content. \"Queryable,\" \"query,\" and \"live query\" are fine as descriptors; in product-facing CTAs Fleet often prefers \"report.\" Don't expose raw upstream project names where \"Fleet's agent\" reads cleaner.\n- **Sentence case** for all headings and for credential/product names (\"Certified Fleet expert,\" not \"Certified Fleet Expert\").\n- Name competitors and other tools plainly and fairly — no scare quotes, no snark. The argument should win on substance.\n\n### Honest-claims guardrails\n\nFleet content earns trust by being accurate. This is non-negotiable and applies whether drafting or editing.\n\n- **Never invent an integration, capability, or parity claim.** If you're not certain Fleet does something, don't assert it. Verify against Fleet's docs (fleetdm.com), the changelog, or ask the author.\n- **Hedge where the truth is partial.** Prefer \"tends to wave it through\" over \"is completely blind to\"; prefer \"you can pipe Fleet data into Sentinel via your existing pipeline\" over implying a turnkey native connector that may not exist. Accurate-but-modest beats impressive-but-wrong every time.\n- **Ground specifics.** Tie capability claims to real versions/features when you can (\"landed for macOS in Fleet 4.70.0, extended to Windows in 4.84.0\"). Flag any claim you couldn't verify so a human can check it before publishing.\n- Cross-platform coverage (macOS, Windows, Linux, and beyond) is usually Fleet's strongest differentiator — surface it, but only where it's genuinely relevant to the point.\n\n### Formatting restraint\n\nDefault to prose. Use bullets and tables only where a list genuinely earns its place — enumerations (e.g. a fixed checklist you're contrasting against), step sequences, code, or scannable reference. Don't bullet a narrative. Don't bold half the sentence. The key takeaways are the one section that's intentionally list-heavy; the body should breathe.\n\n### De-duplication\n\nEach distinct point gets one primary home. A claim that appears five times across a piece loses force and bloats length. The takeaways preview the body, but beyond that, if you find the same idea stated in two sections, keep it in the stronger one and cut or cross-reference the other. When a point legitimately belongs in two places (takeaway + body), vary the wording so it reads as deliberate, not duplicated.\n\n## Workflow: writing a new piece\n\n1. Confirm the piece is an **article** (not a case study, announcement, or guide) and pin down the article type (thought-leadership, how-to, or comparison) and the single main argument.\n2. Draft the body sections first — that's where the substance is. Ground every claim; flag anything unverified.\n3. Write the dek and the intro. Keep the intro to about two short paragraphs; it opens the body, so end it on a bridge into the first section.\n4. Derive the **key takeaways** from the finished body: one outcome-first bullet per major section, 5–6 total, previewing without echoing. Place them immediately after the dek, before the intro — each bullet must stand alone with no setup.\n5. Add the **post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label and destination relevant to the piece.\n6. Write the closing and the closing CTA.\n7. Run the `content-style` skill over the whole draft for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: updating and enhancing existing content\n\nUse this to bring older Fleet content up to the current format. Work through it in order.\n\n1. **Confirm it's an article.** Check the `<meta name=\"category\" ...>` value against the Content types table. If it's `articles` or `comparison`, proceed. Otherwise stop — this format doesn't apply; tell the author rather than reshaping their piece.\n2. **Read the whole piece** and identify its main argument and its natural section breaks.\n3. **Add a dek** if there isn't one — an italic one-or-two-sentence framing under the title.\n4. **Insert a \"Key takeaways\" section** immediately after the dek, before the intro. Derive 5–6 outcome-first bullets, roughly one per major section. Make them preview the body without copying sentences out of it, and make sure each stands alone — the reader hasn't seen the intro yet.\n5. **Add the post-takeaways CTA button** (`<a purpose=\"cta-button\" href=\"https://fleetdm.com/path\">…</a>`) directly after the takeaways, before the intro, with a label/destination relevant to the piece.\n6. **Tighten the intro** to about two short paragraphs. It now follows the CTA button and opens the body, so it should set up the problem and bridge into the first section — not restate the takeaways.\n7. **Sweep terminology**: replace \"osquery\" with \"Fleet's agent\"/\"fleetd\" in prose, fix Title Case headings to sentence case, fix capitalized credential/product names.\n8. **De-duplicate**: find claims repeated across sections and keep each in its strongest single home.\n9. **Verify claims**: check every capability/integration/parity statement against Fleet's docs or the changelog. Soften or correct anything unsupported; flag anything you can't confirm for the author.\n10. **Trim over-formatting**: convert bullet-soup back to prose where a list isn't earning its place; reduce stray bolding.\n11. **Preserve structural metadata** (meta tags, author fields, frontmatter, existing links) exactly — don't drop them in the rewrite.\n12. **Run the `content-style` skill** over the revised prose — it owns the voice, sentence case, em-dash, filler, and terminology rules referenced in the steps above; let it be the final word on word-level style.\n13. Run the self-check below, then summarize the changes you made and list any claims you flagged for human verification.\n\n## Self-check before finishing\n\n- Title is sentence case and outcome-led; there's an italic dek that frames rather than summarizes.\n- \"Key takeaways\" sits immediately after the dek, before the intro: 5–6 outcome-first bullets, each previewing a section, each standing alone, none echoing a body sentence verbatim.\n- A single CTA button follows the key takeaways and precedes the intro, with a label and destination relevant to the piece.\n- The intro is short (about two short paragraphs), doesn't restate the takeaways, and ends on a bridge into the first body section.\n- Body sections lead with their point and use grounded specifics; comparison pieces credit the other tool before adding depth.\n- No \"osquery\" in customer-facing prose; headings and credential names are sentence case.\n- Every capability claim is true and grounded; partial truths are hedged; unverified claims are flagged.\n- No idea is repeated across sections without a reason; formatting is restrained outside the takeaways.\n- Closing lands the through-line without re-listing the takeaways; the top button and closing CTA aren't identical, and all links are real.\n- Endmatter is present, `articleTitle` matches the H1 exactly, and `description` is 150 characters or fewer (counted, not estimated). Author and date are real or flagged, never invented.\n- The `content-style` skill has been run over the prose, and its voice, grammar, and terminology guidance is satisfied.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/article-template.md`. Start new articles from it when helpful.\n\n<!-- File: .claude/skills/fleet-case-study-formatting/assets/case-study-template.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Assets Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/assets/case-study-template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/assets/case-study-template.md)\n\n<!-- File: .claude/skills/fleet-case-study-formatting/references/canonical-examples.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/fleet-case-study-formatting/references/canonical-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-case-study-formatting/references/canonical-examples.md)\n\n<!-- File: .claude/skills/fleet-case-study-formatting/SKILL.md (Tokens: ~3844 | Category: anthropic-skill) -->\n---\nname: fleet-case-study-formatting\ndescription: Apply Fleet's house format, voice, and required meta tags to Fleet CASE STUDIES — customer success stories published under `<meta name=\"category\" value=\"case study\">`. Use when drafting a new case study from a customer interview/quotes, or editing, tightening, or auditing an existing one, even if the user doesn't say \"case study\" (triggers: \"customer story\", \"success story\", \"write up [Company]'s Fleet migration\", \"case study for X\", a request built from call notes/quotes about a customer's experience with Fleet). Governs the challenge → choosing Fleet → results structure, the `attribution-quote` and `checklist` custom divs, the case-study-specific endmatter (summaryChallenge/summarySolution/summaryKeyResults, company/quote meta tags) the website build enforces, and the non-negotiable rule that every quote is verbatim and every number is customer-sourced. Pair with content-style for word-level voice. Do NOT use for articles, guides, or announcements — those are separate content types with their own skills, even when they also tell a customer story.\nallowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(git status*)\neffort: medium\n---\n\n# Fleet case study formatting\n\nA Fleet case study exists to let a skeptical prospect hear, in a real customer's own words, that switching to Fleet solved a specific problem. It is not an article, and it is not marketing copy dressed up with a logo — it's a structured, quote-driven narrative that the website renders into a dedicated template with a sidebar summary, a company card, and a hero pull-quote. This skill governs that **structure, custom syntax, and required meta tags**; pair it with `content-style` for word-level voice (sentence case, no em dashes, no filler, no hype).\n\n## Scope — when this skill applies\n\nApplies to pieces published under `<meta name=\"category\" value=\"case study\">` — a customer's story of adopting Fleet, told in three acts (their problem, why they chose Fleet, what changed) and anchored by real attributed quotes.\n\nDoes **not** apply to:\n\n- **Articles** (`category` = `articles` or `comparison`) — thought-leadership, how-to, comparison pieces. Use `fleet-article-formatting`.\n- **Guides** (`category` = `guides`) — step-by-step procedures. Use `fleet-guide-formatting`.\n- **Announcements** (`category` = `announcements`) — even when they narrate a customer's experience. `articles/deputy-achieves-compliance-and-clarity-with-fleet.md` is a real example: it reads like a case study but is tagged `announcements` and skips the case-study meta tags entirely. If a customer-story draft doesn't have (or won't have) the summary/quote/company meta tags below, it's probably meant to be an announcement or article, not a case study — ask rather than forcing this template on it.\n\nBefore applying this format, check the `<meta name=\"category\" ...>` value, or ask which type the piece is destined for.\n\n## Canonical examples\n\nRead one or two before writing a new case study — `articles/fastly.md`, `articles/stripe.md`, `articles/thumbtack.md`, `articles/mollie.md`, `articles/faire.md`, `articles/foursquare.md`, `articles/primo.md`. All follow the same skeleton with different section names suited to each story. See `references/canonical-examples.md` for a structural breakdown of each one.\n\n## The structure\n\n```\n# Title (sentence case, names the company and the outcome)\n\n## [Challenge section: \"The Challenge\" / \"Why [Company] needed a change\" / \"The search for a solution\"]\n[Narrative: the old tool/process, the pain, why it became untenable.]\n\n<div purpose=\"attribution-quote\">\n\n*Verbatim quote about the pain.*\n\n**Speaker name**\n\nTitle, Company\n</div>\n\n## [Decision section: \"Choosing Fleet\" / \"Why Fleet\" / \"The search for a solution\"]\n[Narrative: evaluation criteria, why Fleet won, how the switch went.]\n\n<div purpose=\"checklist\">        <!-- optional, for evaluation criteria or a short outcome list -->\n\nFirst criterion or result\n\nSecond criterion or result\n</div>\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Results section: \"The results\" / \"The outcome\"]\n[Narrative: quantified outcomes, what's different now.]\n\n<div purpose=\"attribution-quote\">\n...\n</div>\n\n## [Optional closing: \"Looking ahead\" / \"The future\"]\n[What's next for the partnership — a plan, an expansion, a platform they're evaluating next.]\n\n<meta name=\"category\" value=\"case study\">\n<meta name=\"articleTitle\" value=\"...\">\n<meta name=\"description\" value=\"...\">\n\n<meta name=\"publishedOn\" value=\"YYYY-MM-DD\">\n<meta name=\"authorGitHubUsername\" value=\"n/a\">\n<meta name=\"authorFullName\" value=\"Fleetdm\">\n\n<meta name=\"companyLogoFilename\" value=\"...\">\n<meta name=\"quoteAuthorImageFilename\" value=\"...\">\n<meta name=\"quoteAuthorName\" value=\"...\">\n<meta name=\"quoteAuthorJobTitle\" value=\"...\">\n<meta name=\"quoteContent\" value=\"...\">\n\n<meta name=\"companyName\" value=\"...\">\n<meta name=\"companyInfo\" value=\"...\">\n<meta name=\"companyInfoLineTwo\" value=\"...\">    <!-- optional -->\n\n<meta name=\"summaryChallenge\" value=\"...\">\n<meta name=\"summarySolution\" value=\"...\">\n<meta name=\"summaryKeyResults\" value=\"...; ...; ...\">\n```\n\n### Title\n\nSentence case (except the company name, which keeps its own capitalization). Names the company and states the outcome, not the feature: \"Fastly gains visibility into all endpoints and critical infrastructure worldwide,\" \"Stripe moved 10,000 Macs to Fleet, saving hundreds of thousands annually,\" \"Thumbtack migrates more than 90% of Macs with no IT intervention.\" \"How [Company] ...\" also works when the story is about a mechanism (\"How Mollie manages endpoint compliance the same way it ships software,\" \"How Primo built an HR-driven IT platform, powered by Fleet\").\n\n### The three-act narrative\n\nEvery canonical example is some variation of this arc, even though section headings differ story to story — pick headings that fit the story rather than copying one example's exact wording:\n\n1. **The problem.** What the customer used before (or the process they had), why it broke down, and the cost of that (wasted time, risk, a specific incident, slow vendor support). Ground it in specifics: real tool names, real numbers of devices, a real incident (Thumbtack's mis-set nudge-profile date; Stripe's fragmented API workarounds).\n2. **Choosing Fleet.** What they evaluated against (sometimes an explicit checklist of criteria), and why Fleet won. Tie each reason back to a capability, not a vague endorsement: API-first architecture enabling GitOps, open-source code enabling self-hosting or auditability, cross-platform coverage, responsive Slack-based support.\n3. **The results.** Quantified, concrete outcomes: migration speed and percentage, cost/licensing savings, headcount or ticket-volume effects, new capabilities unlocked. This is where a `checklist` div listing bullet-style results is most common.\n\nAn optional fourth section (\"Looking ahead,\" \"The future\") closes with what's next — expanded platform coverage, a deepening partnership, a new use case. Not every case study needs one; several of the canonical examples fold this into the results section instead.\n\n### Custom syntax\n\nTwo custom `<div purpose=\"...\">` blocks, unique to case studies (and rarely used elsewhere) — get them exactly right, the build pipeline and stylesheet depend on them:\n\n**`attribution-quote`** — a pull quote inside the body, attributed to a named speaker:\n\n```\n<div purpose=\"attribution-quote\">\n\n*Italicized verbatim quote, exactly as the customer said it.*\n\n**Speaker Name**\n\nTitle, Company\n</div>\n```\n\n- The quote line is italic (`*...*`), the name is bold (`**...**`), the title/company line is plain text. Blank lines between each are required for the markdown to render correctly.\n- Title and company can be one line (`Sr Manager Systems Engineering, Fastly`) or, when the company is already obvious from context, just the title.\n- Use 2-4 of these per case study, spaced through the narrative at the moments they land hardest — right after describing the pain, right after the \"why Fleet\" reasoning, and in the results section. Don't front-load them all in one place.\n\n**`checklist`** — a plain list of short items with no markdown bullet syntax, rendered as a checklist by the stylesheet:\n\n```\n<div purpose=\"checklist\">\n\nFirst item — a criterion, a feature, or a quantified result\n\nSecond item\n\nThird item\n</div>\n```\n\n- Items are separated by blank lines, not `-` or `*` bullets — the div's CSS supplies the checkmark styling.\n- Use it for evaluation criteria (Faire's three MDM-selection priorities) or a short, punchy results list (Foursquare's cost/time savings). Longer results lists (4+ items with more explanation) can also work as plain markdown bullets in the results section prose, as Thumbtack's and Primo's \"With Fleet, [Company] has:\" lists do — either is fine, pick whichever reads cleaner for the story.\n\n### Voice and honesty guardrails — stricter than other content types\n\nCase studies carry more risk than an article: every claim is attributed to a real person at a real company, and it gets fact-checked by that company before or after publishing.\n\n- **Quotes are verbatim, never paraphrased or invented.** If you don't have the customer's exact words for a moment the story needs, write the narrative around it without a quote, or flag it for the author to source a real quote. Do not manufacture a plausible-sounding quote and attribute it to a named person.\n- **Numbers come from the customer, not from you.** Migration percentages, device counts, cost savings, timeframes — these all must trace back to what the customer or the Fleet team working with them actually said. Flag any number you're inferring rather than quoting/sourcing directly.\n- **Name Fleet's own team members' contributions honestly** (e.g., a CSM's role in a migration) only if that's part of the customer's account, not invented color.\n- Otherwise, the standard `content-style` rules apply in full: sentence case headings, no em dashes, no hyperbole (\"revolutionary,\" \"seamless,\" \"game-changing\"), Oxford commas, active voice. Case study prose reads slightly more narrative/conversational than a guide, closer to an article, but it's still restrained — let the customer's own quotes carry the enthusiasm; the narrator's voice around them stays measured and factual.\n\n### Endmatter — case-study-specific meta tags (build-enforced)\n\nBeyond the standard article endmatter (`articleTitle`, `description`, `publishedOn`, `authorFullName`, `authorGitHubUsername`, `category`), the website's markdown build (`website/scripts/build-static-content.js`) requires additional tags for `category: case study` pages, and will fail the build if they're missing:\n\n- **`summaryChallenge`, `summarySolution`, `summaryKeyResults`** — required. These populate the sidebar \"Challenge / Solution / Key results\" summary box on the case study page (`website/views/pages/articles/case-study.ejs`). `summaryKeyResults` **must** be a semicolon-separated list (`\"Result one; Result two; Result three\"`) — a single sentence with no semicolon fails the build.\n- **`companyLogoFilename`** — if present, must reference a file that actually exists in `website/assets/images/`. The build checks this and errors if the file is missing.\n- **`quoteContent`** (the hero pull-quote at the top of the page) — if present, requires `quoteAuthorName`, `quoteAuthorJobTitle`, and `quoteAuthorImageFilename` alongside it, and the image file must exist in `website/assets/images/`.\n- **`companyName`, `companyInfo`** (and optional `companyInfoLineTwo`) — power the \"About [Company]\" sidebar/mobile block. Not build-enforced, but expected by the template; include them.\n\n**Image assets are a hard dependency, not something this skill can produce.** Before the build will succeed, someone needs to add the actual logo and headshot files to `website/assets/images/`, following the site's naming convention (`{descriptor}-{css-width}x{css-height}@2x.{ext}`, e.g. `fastly-logo-104x40@2x.png`, `dan-jackson-120x120@2x.png`). If those files don't exist yet, say so explicitly rather than writing `<meta>` tags that point at nothing — that's a silent build break waiting to happen.\n\nAn escape hatch exists (`<meta name=\"useBasicArticleTemplate\" value=\"true\">`) for a case study that should render with the plain article template instead of the sidebar layout; it then requires `cardTitleForCustomersPage` instead of the summary/quote/company tags. This is rare — only reach for it if the author specifically doesn't want the sidebar template.\n\n### Related, optional step: testimonials.yml\n\nMany (not all) published case studies also get their pull-quote added as an entry in `handbook/company/testimonials.yml`, which feeds the `<scrollable-tweets>` carousel used across the site (e.g., the `/customers` page). This is a nice-to-have, not build-enforced, and outside this skill's core job — mention it to the author as a follow-up rather than doing it unprompted, since it touches a shared file curated by the marketing team.\n\n## Workflow: writing a new case study\n\n1. Confirm you have real material to draw from — customer quotes (verbatim, attributed), and concrete numbers (device counts, migration timelines, cost figures). If working from raw interview notes or a call transcript, extract the quotes and facts before drafting; don't smooth a real quote into different words.\n2. Identify the three-act shape for this specific story: what was broken, why Fleet, what changed. Pick section headings that fit the story (see canonical examples) rather than reusing one example's headings verbatim.\n3. Draft the body: problem → decision → results, threading 2-4 `attribution-quote` divs at the moments they land, and a `checklist` div for evaluation criteria and/or headline results if the story has a natural short list.\n4. Write the title (sentence case, names the company and the outcome).\n5. Write the full endmatter block: standard article tags, then the case-study-specific summary/quote/company tags. Derive `summaryChallenge`/`summarySolution` as tight paraphrases of the body's first two acts; derive `summaryKeyResults` from the results section, semicolon-separated.\n6. Confirm image assets (`companyLogoFilename`, `quoteAuthorImageFilename`) exist in `website/assets/images/`, or flag that they still need to be added.\n7. Run the `content-style` skill over the prose for voice, sentence case, em dashes, filler, and Fleet terminology.\n8. Run the self-check below.\n\n## Workflow: auditing or editing an existing case study\n\n1. Confirm it's tagged `category: case study`. If it's an `announcements` piece narrating a customer story (like the Deputy example), don't force this structure onto it — flag the mismatch instead.\n2. Read the whole piece and check the three-act shape is intact: problem, decision, results, each grounded in specifics rather than generic praise.\n3. Check every quote reads as something a person would actually say (specific, occasionally imperfect phrasing) rather than smoothed marketing copy — that's often a sign a quote was paraphrased rather than transcribed. Flag for the author to verify against the source if uncertain.\n4. Check the `attribution-quote` and `checklist` divs are syntactically correct (blank lines between quote/name/title, no stray markdown bullets inside `checklist`).\n5. Verify the endmatter has all case-study-required tags and that `summaryKeyResults` is semicolon-separated.\n6. Verify referenced image files (`companyLogoFilename`, `quoteAuthorImageFilename`) actually exist in `website/assets/images/`.\n7. Run the `content-style` skill over the prose.\n8. Run the self-check below, then summarize changes and flag anything you couldn't verify (a number, a quote, a missing image asset).\n\n## Self-check before finishing\n\n- Title is sentence case, names the company, and states the outcome rather than a feature.\n- Body follows the problem → choosing Fleet → results arc, with section headings suited to this story.\n- 2-4 `attribution-quote` divs, correctly formatted (italic quote, blank line, bold name, blank line, title/company), spaced through the narrative rather than clustered.\n- Every quote is verbatim and attributed to a real, named person; no invented quotes.\n- Every number (migration %, timeframe, cost, device count) traces back to the customer or Fleet team, not an inference.\n- A `checklist` div (or a plain bullet list) surfaces the headline results.\n- Endmatter includes `summaryChallenge`, `summarySolution`, `summaryKeyResults` (semicolon-separated), and the company/quote meta tags — or, if using `useBasicArticleTemplate`, `cardTitleForCustomersPage` instead.\n- `companyLogoFilename` and `quoteAuthorImageFilename` reference image files that exist in `website/assets/images/`, or the author has been told they still need to add them.\n- No \"osquery\" in prose (say \"Fleet's agent\" or \"fleetd\"); headings sentence case; no em dashes, filler, or hyperbole.\n- The `content-style` skill has been run over the prose.\n\n## Reference\n\nA blank, copyable skeleton lives at `assets/case-study-template.md`. A structural breakdown of each canonical example lives at `references/canonical-examples.md`.\n\n<!-- File: .claude/skills/fleet-gitops/references/profiles-android.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-android.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-android.md)\n\n<!-- File: .claude/skills/fleet-gitops/references/profiles-apple.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-apple.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-apple.md)\n\n<!-- File: .claude/skills/fleet-gitops/references/profiles-windows.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/profiles-windows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/profiles-windows.md)\n\n<!-- File: .claude/skills/fleet-gitops/references/queries.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/queries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/queries.md)\n\n<!-- File: .claude/skills/fleet-gitops/references/software.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.claude/skills/fleet-gitops/references/software.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/fleetdm/fleet/HEAD/.claude/skills/fleet-gitops/references/software.md)\n\n<!-- ... +346 more modular skills available via /api/skills/fleetdm/fleet?path={path} -->\n</yakaai_skills>"}