skills/config-drift/SKILL.md
Use when checking whether a market's configuration has drifted from the global standard — on-demand for a specific market, or as a weekly scan across all markets. Triggers when someone asks about config divergence, accidental overrides, or market config consistency.
npx skillsauth add locus-taxy/locus-SD-toolkit config-driftInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Detect divergences between a market's config and the global reference standard. Separate intentional localisations (documented) from configuration accidents (undocumented). Risk-score undocumented findings. Drive resolution through Jira tasks.
Two modes, one skill:
Also runs inline as Dimension 6 of /go-nogo — see go-nogo skill.
| Category | Definition | Action |
|----------|-----------|--------|
| Documented | Intentional localisation recorded in market-config-overrides.md or market-decision-log.md | Shown in report, no Jira task |
| Undocumented | Setting differs from global with no record of why | Risk-scored, Jira task created, shown in report |
| Tier | Field types | Rationale | |------|-------------|-----------| | 🔴 High | Auth method, SLA thresholds, critical field mappings (SHIP_CONFIRM, order status) | Silent failures, compliance risk, or data integrity impact | | 🟡 Medium | Carrier dispatch timeout, API version, retry policy, lead times | Operational impact but catchable in monitoring | | 🟢 Low | Time window labels, cosmetic field differences, non-critical config flags | No operational impact, low urgency |
/config-drift [market] → SA Mode (one market, full detail)
/config-drift → Director Mode (all markets, rollup)
/config-drift all → Director Mode (explicit)
When running interactively, use workshop-facilitation as the interaction protocol for pacing and interruption handling.
This file defines the workflow and domain outputs. If there is a conflict, follow this file's logic.
Use template.md for the findings table structure.
Read the following in parallel:
| Source | What to read |
|--------|-------------|
| Solution/Global-Solution-Document.md | Global config baseline — routing, SLAs, promise logic, returns |
| Solution/Client-Configuration.md | Global client config baseline — carrier settings, auth, field mappings |
| Solution/Markets/[market]/market-config-overrides.md | Market config deviations declared |
| Solution/Markets/[market]/market-client-config.md | Market client config deviations |
| Solution/Markets/[market]/carrier-integration-spec.md | Market integration settings — protocol, auth, field mappings, API version |
| Solution/Markets/[market]/market-decision-log.md | Recorded decisions and documented exceptions |
For each field that differs between market and global:
Check market-config-overrides.md and market-decision-log.md — is this divergence explicitly recorded?
For undocumented items, present findings to the SA before writing output:
I found [n] divergences in [Market] ([n] undocumented, [n] documented).
Here are my risk assessments for the undocumented items — override any tier before I write the output:
Field: carrier_dispatch_timeout
Global: 30s | Market: 45s
Risk: 🟡 Medium — operational impact if carriers have strict SLA windows
Override? (press Enter to accept, or type Low/High)
Field: auth_method
Global: OAuth2 | Market: API key
Risk: 🔴 High — API key auth has no expiry enforcement; token rotation risk
Override? ...
Autonomous weekly scan: Skip the override step — write output immediately with Claude-assigned tiers.
Repo file → outputs/config-drift/[market]-[YYYY-MM-DD].md
---
market: [IKEA-XX]
mode: single
generated: [YYYY-MM-DD]
sa_lead: [name]
total_divergences: [n]
undocumented: [n]
documented: [n]
high_risk: [n]
medium_risk: [n]
low_risk: [n]
jira_tasks_created: [n]
---
Body: findings table (see template.md).
Jira tasks — one per undocumented divergence:
[Config Drift] [Market] — [field] differs from global standardSlack post — to market delivery channel:
🔍 CONFIG DRIFT — [Market] | [date]
[n] divergences found: [n] undocumented, [n] documented
UNDOCUMENTED (action required):
🔴 [field] — [one-line rationale] → Jira: [task-id]
🟡 [field] — [one-line rationale] → Jira: [task-id]
🟢 [field] — [one-line rationale] → Jira: [task-id]
DOCUMENTED (intentional):
✅ [field] — [decision reference]
Full report: outputs/config-drift/[market]-[date].md
Read all market folders under Solution/Markets/. Run the full diff for each. Do not present per-market override prompts — use Claude-assigned tiers directly.
Classify each market:
Identify all High-risk undocumented items across all markets.
Repo rollup → outputs/config-drift/rollup-[YYYY-MM-DD].md
YAML frontmatter with per-market summary + full findings for each market in body.
Slack digest — one post to S&D delivery channel only (no per-market posts):
📊 WEEKLY CONFIG DRIFT — all markets | [date]
🟢 Clean (0 undocumented): [markets]
🟡 Minor drift (1–3): [market] ([n]), [market] ([n])
🔴 Significant drift (>3): [market] ([n])
Total undocumented divergences: [n] across [n] markets
🔴 High-risk items: [n]
• [Market]: [field] — [rationale]
• [Market]: [field] — [rationale]
@[Director] — full rollup: outputs/config-drift/rollup-[date].md
Jira tasks created: [n] (assigned to market SAs)
Symptom: SA panics at any divergence; flags intentional localisations as blockers. Fix: Documented divergences are expected and healthy. The skill separates them. Only undocumented drift needs action.
Symptom: SA adds a vague entry to market-decision-log.md with no rationale just to make the finding go away.
Fix: Documentation must include: what the deviation is, why it was approved, and who approved it. A one-word entry doesn't count.
Symptom: Drift accumulates across weeks; large number of findings at T-2 creates pressure to dismiss them. Fix: Run weekly (autonomous) to keep the surface small. The T-2 go-nogo check should be a confirmation, not a discovery.
Symptom: SA approves all risk tiers without reviewing, then disputes Jira task priorities later. Fix: The override step is 2 minutes. If Claude assigned 🔴 High to a field the SA considers Low, fix it now — not after the Jira task is already assigned.
skills/go-nogo/SKILL.md — /config-drift runs inline as Dimension 6 of the go-nogo gateskills/raid-scan/SKILL.md — Undocumented High-risk drift should be cross-referenced against open RAIDsSolution/Global-Solution-Document.md — global config baselineSolution/Client-Configuration.md — global client config baselineSolution/Markets/[market]/ — all market-level config and decision filesoutputs/config-drift/ — all past drift reports (machine-readable + human-readable)Registered in CLAUDE.md under Autonomous Operations — runs weekly, no trigger needed. Output: repo rollup + Slack digest + Jira tasks.
Skill type: Interactive + Autonomous
Placement: skills/config-drift/
SA mode output: outputs/config-drift/[market]-[YYYY-MM-DD].md + Jira tasks + Slack to market channel
Director mode output: outputs/config-drift/rollup-[YYYY-MM-DD].md + Slack to S&D channel
testing
Facilitate workshop sessions in a one-step, multi-turn flow. Use when an interactive skill needs consistent pacing, options, and progress tracking.
documentation
Guide the transition to VP or CPO across preparing, interviewing, landing, and recalibrating. Use when executive product scope is changing fast.
development
Create user stories with Mike Cohn format and Gherkin acceptance criteria. Use when turning user needs into development-ready work with clear outcomes and testable conditions.
testing
Break a large story or epic into smaller deliverable stories using proven split patterns. Use when backlog items are too big for estimation, sequencing, or independent release.