@event4u/agent-config 2.16.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/.agent-src/commands/ghostwriter/delete.md +118 -0
  2. package/.agent-src/commands/ghostwriter/fetch.md +185 -0
  3. package/.agent-src/commands/ghostwriter/list.md +102 -0
  4. package/.agent-src/commands/ghostwriter/show.md +113 -0
  5. package/.agent-src/commands/ghostwriter/write.md +160 -0
  6. package/.agent-src/commands/ghostwriter.md +96 -0
  7. package/.agent-src/commands/post-as/ghostwriter.md +66 -0
  8. package/.agent-src/commands/post-as/me.md +124 -0
  9. package/.agent-src/commands/post-as.md +58 -0
  10. package/.agent-src/ghostwriter/README.md +61 -0
  11. package/.agent-src/ghostwriter/fictional-fixture-v1.md +94 -0
  12. package/.agent-src/personas/README.md +8 -0
  13. package/.agent-src/rules/domain-safety-disclaimer-consulting.md +52 -0
  14. package/.agent-src/rules/domain-safety-disclaimer-financial.md +54 -0
  15. package/.agent-src/rules/domain-safety-disclaimer-legal.md +49 -0
  16. package/.agent-src/rules/domain-safety-disclaimer-medical.md +56 -0
  17. package/.agent-src/rules/domain-safety-export-redact.md +65 -0
  18. package/.agent-src/rules/domain-safety-logging-pii-floor.md +55 -0
  19. package/.agent-src/rules/domain-safety-pii-finance.md +57 -0
  20. package/.agent-src/rules/domain-safety-pii-marketing.md +60 -0
  21. package/.agent-src/rules/domain-safety-pii-recruiting.md +56 -0
  22. package/.agent-src/rules/domain-safety-pii-support.md +57 -0
  23. package/.agent-src/rules/domain-safety-retention-finance.md +48 -0
  24. package/.agent-src/rules/domain-safety-retention-support.md +55 -0
  25. package/.agent-src/skills/api-design/SKILL.md +3 -0
  26. package/.agent-src/skills/authz-review/SKILL.md +3 -0
  27. package/.agent-src/skills/competitive-moat-analysis/SKILL.md +3 -0
  28. package/.agent-src/skills/competitive-positioning/SKILL.md +3 -0
  29. package/.agent-src/skills/content-funnel-design/SKILL.md +3 -0
  30. package/.agent-src/skills/contracts-cognition/SKILL.md +3 -0
  31. package/.agent-src/skills/dashboard-design/SKILL.md +3 -0
  32. package/.agent-src/skills/data-handling-judgment/SKILL.md +3 -0
  33. package/.agent-src/skills/dcf-modeling/SKILL.md +3 -0
  34. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +3 -0
  35. package/.agent-src/skills/discovery-interview/SKILL.md +3 -0
  36. package/.agent-src/skills/editorial-calendar/SKILL.md +3 -0
  37. package/.agent-src/skills/forecast-accuracy/SKILL.md +3 -0
  38. package/.agent-src/skills/forecasting/SKILL.md +3 -0
  39. package/.agent-src/skills/fundraising-narrative/SKILL.md +3 -0
  40. package/.agent-src/skills/gtm-launch/SKILL.md +3 -0
  41. package/.agent-src/skills/incident-commander/SKILL.md +3 -0
  42. package/.agent-src/skills/launch-readiness/SKILL.md +3 -0
  43. package/.agent-src/skills/messaging-architecture/SKILL.md +3 -0
  44. package/.agent-src/skills/okr-tree-modeling/SKILL.md +3 -0
  45. package/.agent-src/skills/pipeline-strategy/SKILL.md +3 -0
  46. package/.agent-src/skills/playwright-architect/SKILL.md +3 -0
  47. package/.agent-src/skills/privacy-review/SKILL.md +4 -1
  48. package/.agent-src/skills/quality-tools/SKILL.md +3 -0
  49. package/.agent-src/skills/release-comms/SKILL.md +3 -0
  50. package/.agent-src/skills/runway-cognition/SKILL.md +3 -0
  51. package/.agent-src/skills/scenario-modeling/SKILL.md +3 -0
  52. package/.agent-src/skills/secrets-management/SKILL.md +3 -0
  53. package/.agent-src/skills/tech-debt-tracker/SKILL.md +3 -0
  54. package/.agent-src/skills/unit-economics-modeling/SKILL.md +3 -0
  55. package/.agent-src/skills/voc-extract/SKILL.md +3 -0
  56. package/.agent-src/skills/voice-and-tone-design/SKILL.md +3 -0
  57. package/.agent-src/templates/agents/agent-project-settings.example.yml +16 -1
  58. package/.claude-plugin/marketplace.json +10 -1
  59. package/CHANGELOG.md +69 -0
  60. package/README.md +44 -23
  61. package/config/gitignore-block.txt +8 -0
  62. package/docs/announcements/2026-05-non-dev-launch.md +79 -0
  63. package/docs/architecture.md +2 -2
  64. package/docs/case-studies/_template.md +60 -0
  65. package/docs/catalog.md +24 -3
  66. package/docs/contracts/agent-user-schema.md +1 -0
  67. package/docs/contracts/command-clusters.md +2 -0
  68. package/docs/contracts/file-ownership-matrix.json +490 -0
  69. package/docs/contracts/ghostwriter-schema.md +337 -0
  70. package/docs/contracts/init-telemetry.md +133 -0
  71. package/docs/contracts/router-blending.md +71 -0
  72. package/docs/contracts/universal-skills.md +92 -0
  73. package/docs/contracts/write-engine.md +142 -0
  74. package/docs/getting-started-by-role.md +89 -0
  75. package/docs/getting-started-laravel.md +72 -0
  76. package/docs/getting-started.md +2 -2
  77. package/docs/safety.md +30 -0
  78. package/package.json +1 -1
  79. package/scripts/bench_runner.py +158 -0
  80. package/scripts/check_role_doc_links.py +110 -0
  81. package/scripts/compress.py +11 -0
  82. package/scripts/ghostwriter_fixture_allowlist.txt +16 -0
  83. package/scripts/install.py +133 -1
  84. package/scripts/lint_ghostwriter_source.py +240 -0
  85. package/scripts/measure_skill_reduction.py +102 -0
  86. package/scripts/schemas/rule.schema.json +5 -0
  87. package/scripts/schemas/skill.schema.json +6 -0
  88. package/scripts/update-github-metadata.sh +84 -0
@@ -0,0 +1,56 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Drafting health, wellness, medical, or therapeutic content — require 'not medical advice' disclaimer; refuse diagnostic or dosage outputs"
5
+ source: package
6
+ triggers:
7
+ - keyword: "diagnosis"
8
+ - keyword: "symptoms"
9
+ - keyword: "dosage"
10
+ - keyword: "medication"
11
+ - keyword: "therapy"
12
+ - keyword: "treatment plan"
13
+ - phrase: "should I take"
14
+ - phrase: "is this symptom"
15
+ applies_to_user_types:
16
+ - "creator"
17
+ - "consultant"
18
+ routes_to:
19
+ - "skill:privacy-review"
20
+ ---
21
+
22
+ # Domain Safety — Medical Disclaimer
23
+
24
+ ## Iron Law
25
+
26
+ ```
27
+ NEVER OUTPUT A DIAGNOSIS OR A DOSAGE RECOMMENDATION.
28
+ EVERY HEALTH-SHAPED DRAFT SHIPS WITH A "NOT MEDICAL ADVICE" DISCLAIMER
29
+ AND A "SEEK A LICENSED PROFESSIONAL" REDIRECT.
30
+ ```
31
+
32
+ Healthcare outputs carry the highest harm tail — a wrong diagnosis or dosage from an AI can injure or kill. Two-layer guard: refuse the diagnostic / dosage shape outright, and disclaim everything else.
33
+
34
+ ## Refuse outright
35
+
36
+ - *"What do I have?"* / *"Is this symptom serious?"* → refuse + redirect to a licensed provider, urgent care, or emergency services if symptoms suggest acute risk.
37
+ - *"How much [medication] should I take?"* → refuse + redirect to pharmacist / prescriber.
38
+ - *"Can I stop my medication?"* → refuse + redirect to prescriber.
39
+
40
+ ## Disclaimer template (append to anything else health-shaped)
41
+
42
+ > **Not medical advice.** This content was generated by an AI assistant for general informational purposes only. It is not a substitute for professional medical advice, diagnosis, or treatment. Always seek the advice of a qualified healthcare provider with any questions you may have regarding a medical condition. If you think you may have a medical emergency, call your local emergency number immediately.
43
+
44
+ German equivalent:
45
+
46
+ > **Keine medizinische Beratung.** Dieser Inhalt wurde von einem KI-Assistenten zu allgemeinen Informationszwecken erstellt. Er ist kein Ersatz für professionelle medizinische Beratung, Diagnose oder Behandlung. Wenden Sie sich bei Fragen zu einer Erkrankung stets an eine qualifizierte medizinische Fachkraft. Bei einem medizinischen Notfall rufen Sie sofort die örtliche Notrufnummer.
47
+
48
+ ## What "health-shaped" means
49
+
50
+ - Symptom interpretation, diagnostic reasoning, treatment selection.
51
+ - Wellness / supplement / fitness recommendations targeted at a condition.
52
+ - Mental-health crisis response (always include suicide / crisis hotline redirect if context suggests acute risk).
53
+
54
+ ## See also
55
+
56
+ - `skill:privacy-review` — HIPAA / health-data regulatory floor.
@@ -0,0 +1,65 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Generating CSV / Excel / API exports, partner data-shares, or analyst handoffs — redact direct identifiers; flag re-identification on quasi-IDs"
5
+ source: package
6
+ triggers:
7
+ - keyword: "export to CSV"
8
+ - keyword: "data export"
9
+ - keyword: "share with analyst"
10
+ - keyword: "send dataset"
11
+ - keyword: "partner integration"
12
+ - phrase: "dump the data"
13
+ - phrase: "send them the spreadsheet"
14
+ routes_to:
15
+ - "skill:data-handling-judgment"
16
+ - "skill:privacy-review"
17
+ applies_to_user_types:
18
+ - "all"
19
+ ---
20
+
21
+ # Domain Safety — Export Redaction
22
+
23
+ ## Iron Law
24
+
25
+ ```
26
+ NO DIRECT IDENTIFIER LEAVES THE SYSTEM IN AN EXPORT.
27
+ NO QUASI-IDENTIFIER COMBINATION THAT IS RE-IDENTIFIABLE LEAVES UNFLAGGED.
28
+ THE RECIPIENT MATTERS — INTERNAL ANALYST IS NOT EXTERNAL PARTNER.
29
+ ```
30
+
31
+ Exports are the most common cross-boundary PII leak path: a CSV "for the analytics team" becomes a download on a laptop, a copy on a partner's S3, a row in someone's training set. Two-layer guard: redact direct identifiers on every export, and pause on quasi-identifier shapes that re-identify even after the names are stripped.
32
+
33
+ ## Direct identifiers — always redact
34
+
35
+ | Class | Action |
36
+ |---|---|
37
+ | Name, email, phone, address | Drop column or hash with a tenant-scoped salt |
38
+ | National ID (SSN, tax ID) | Drop column — never hash, hash is reversible by recipient |
39
+ | Payment card / IBAN | Drop column |
40
+ | Free-text fields (comments, notes) | Pass through a PII scrubber or drop the column |
41
+
42
+ ## Quasi-identifiers — flag and audit
43
+
44
+ The k-anonymity rule of thumb: combinations of {birth date, ZIP/postal code, gender} re-identify 87% of US population. Same applies to {company size, industry, region, founding year} for B2B. When the export contains 3+ quasi-identifiers per row, surface the re-identification risk and ask whether bucketing (age-band instead of birthdate, region instead of city) is acceptable.
45
+
46
+ ## Recipient-tier check
47
+
48
+ | Recipient | Floor |
49
+ |---|---|
50
+ | Internal analyst, NDA-bound, on-prem analytics | Pseudonymized identifiers OK |
51
+ | Internal analyst, BYO-device, cloud analytics | Pseudonymized + aggregated only |
52
+ | External partner, signed DPA | Pseudonymized + minimum-necessary columns |
53
+ | External partner, no DPA | Refuse; require DPA first |
54
+ | Public dataset | Aggregated, k-anonymity ≥ 5, no quasi-identifier combos |
55
+
56
+ ## Refusal triggers
57
+
58
+ - *"Send the customer list to our new marketing vendor"* (no DPA cited) → refuse + redirect to legal.
59
+ - *"Export everything to a Google Sheet"* (recipient tier unknown) → ask the recipient question first.
60
+
61
+ ## See also
62
+
63
+ - `skill:data-handling-judgment` — transfer + retention cognition.
64
+ - `skill:privacy-review` — DPA shape audit.
65
+ - `domain-safety-pii-marketing` — companion when partner = marketing channel.
@@ -0,0 +1,55 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Writing logging code, structured logger config, or log lines — refuse to log raw PII; require redaction or a structured-field allowlist"
5
+ source: package
6
+ triggers:
7
+ - keyword: "log"
8
+ - keyword: "logger"
9
+ - keyword: "logging"
10
+ - keyword: "Sentry"
11
+ - keyword: "Datadog"
12
+ - keyword: "structured log"
13
+ - phrase: "log the user"
14
+ - phrase: "log the request"
15
+ routes_to:
16
+ - "skill:logging-monitoring"
17
+ - "skill:secrets-management"
18
+ applies_to_user_types:
19
+ - "all"
20
+ ---
21
+
22
+ # Domain Safety — Logging PII Floor
23
+
24
+ ## Iron Law
25
+
26
+ ```
27
+ NO RAW EMAIL, NAME, PHONE, ADDRESS, TOKEN, OR PAYMENT IDENTIFIER
28
+ EVER REACHES THE LOG STREAM. REDACT AT THE LOGGER OR USE A
29
+ STRUCTURED-FIELD ALLOWLIST.
30
+ ```
31
+
32
+ Logs are the most common PII-leak surface in modern apps: developers log "the user object" or "the full request" during debugging and ship it to staging or prod where it lands in Datadog / Sentry / CloudWatch — three more systems with three more breach surfaces. The fix is architectural: redact at the logger boundary, never at the call site.
33
+
34
+ ## Required patterns when logging touches user data
35
+
36
+ 1. **Allowlisted structured fields only.** Log `user_id`, `tenant_id`, `request_id`, `event_type` — never `user` or `request` blobs.
37
+ 2. **Logger-level redaction.** Configure the logger to scrub `email`, `phone`, `name`, `address`, `token`, `password`, `card_number`, `iban` keys recursively from any payload.
38
+ 3. **No raw exception payloads.** Exceptions captured by Sentry / Bugsnag must scrub the request body before send. Use the SDK's `before_send` hook.
39
+ 4. **No log-and-forget for auth flows.** Login / password-reset / token-mint logs never include the credential itself, only the actor + outcome.
40
+
41
+ ## Refuse to write
42
+
43
+ - `logger.info("User logged in: $request->all()")` — refuse + show allowlisted version.
44
+ - `Log::info($user)` — refuse + show `Log::info('user.login', ['user_id' => $user->id])`.
45
+ - `console.log(req.body)` for any auth / billing / customer endpoint — refuse + show scrubbed alternative.
46
+
47
+ ## Companion: secrets
48
+
49
+ Tokens, API keys, and webhook secrets follow the same rule under `skill:secrets-management`. Logging code that touches credentials triggers both rules — the allowlist + scrubbing approach satisfies both.
50
+
51
+ ## See also
52
+
53
+ - `skill:logging-monitoring` — logger architecture.
54
+ - `skill:secrets-management` — credential handling.
55
+ - `domain-safety-export-redact` — companion when data leaves via export.
@@ -0,0 +1,57 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Drafting invoices, financial reports, AR/AP statements, or finance memos — redact counterparty PII and account/bank identifiers before output"
5
+ source: package
6
+ triggers:
7
+ - keyword: "invoice"
8
+ - keyword: "accounts receivable"
9
+ - keyword: "accounts payable"
10
+ - keyword: "finance memo"
11
+ - keyword: "AR aging"
12
+ - keyword: "AP run"
13
+ - phrase: "draft a financial report"
14
+ routes_to:
15
+ - "skill:privacy-review"
16
+ - "skill:data-handling-judgment"
17
+ applies_to_user_types:
18
+ - "finance"
19
+ - "ops"
20
+ ---
21
+
22
+ # Domain Safety — PII Redaction (Finance)
23
+
24
+ ## Iron Law
25
+
26
+ ```
27
+ NO REAL COUNTERPARTY PII OR BANK IDENTIFIERS IN ANY FINANCE-DRAFT OUTPUT.
28
+ TEMPLATES USE PLACEHOLDERS. SAMPLE DATA USES SYNTHETIC ONLY.
29
+ ```
30
+
31
+ Finance drafts (invoices, AR/AP runs, reconciliation notes, board memos) routinely embed counterparty names, contact emails, bank account numbers, IBANs, tax IDs. A leaked draft is a regulator-triggering event. Redact at generation time, not after review.
32
+
33
+ ## Redaction map
34
+
35
+ | Class | Placeholder |
36
+ |---|---|
37
+ | Counterparty company | `[COUNTERPARTY]` |
38
+ | Counterparty contact name | `[CONTACT_NAME]` |
39
+ | Counterparty email | `[CONTACT_EMAIL]` |
40
+ | Bank account / IBAN | `[BANK_ACCOUNT]` |
41
+ | Tax ID / VAT number | `[TAX_ID]` |
42
+ | Internal cost center | `[COST_CENTER]` |
43
+ | Real amount in a template | `[AMOUNT]` or synthetic round number |
44
+
45
+ ## Example
46
+
47
+ **Input:** *"Draft a dunning letter for Acme Corp, IBAN DE89370400440532013000, owed €4,210"*
48
+
49
+ **Right output (template):**
50
+ > Dear [CONTACT_NAME], invoice [INVOICE_ID] for [COUNTERPARTY] in the amount of [AMOUNT] is now [DAYS] days past due. Please remit to [BANK_ACCOUNT]…
51
+
52
+ Real values stay in the user's spreadsheet — the agent never echoes them into the drafted artifact.
53
+
54
+ ## See also
55
+
56
+ - `skill:data-handling-judgment` — retention + cross-border transfer.
57
+ - `domain-safety-retention-finance` — companion retention rule.
@@ -0,0 +1,60 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Drafting testimonials, case studies, social proof, or marketing emails referencing real customers — require consent; redact identifiers if absent"
5
+ source: package
6
+ triggers:
7
+ - keyword: "testimonial"
8
+ - keyword: "case study"
9
+ - keyword: "social proof"
10
+ - keyword: "customer story"
11
+ - keyword: "logo wall"
12
+ - phrase: "marketing email featuring"
13
+ routes_to:
14
+ - "skill:privacy-review"
15
+ applies_to_user_types:
16
+ - "marketing"
17
+ - "gtm"
18
+ ---
19
+
20
+ # Domain Safety — PII Redaction (Marketing)
21
+
22
+ ## Iron Law
23
+
24
+ ```
25
+ NO REAL CUSTOMER NAME, LOGO, OR QUOTE IN A PUBLIC MARKETING DRAFT
26
+ WITHOUT A CITED CONSENT RECORD IN THE PROMPT.
27
+ ```
28
+
29
+ Customer testimonials and case studies are the highest-risk marketing artifacts: a missing consent flip turns a glowing story into a contract breach. Refuse to embed real identifying details unless the prompt explicitly cites the consent source (e.g., signed reference-customer agreement, attributed quote approval).
30
+
31
+ ## Required when consent is cited
32
+
33
+ The prompt must include one of:
34
+ - *"Reference-customer agreement dated YYYY-MM-DD"*
35
+ - *"Quote approved by [CONTACT] on YYYY-MM-DD"*
36
+ - *"Public press release [URL]"* (consent inferred from prior publication)
37
+
38
+ Otherwise — redact to placeholders.
39
+
40
+ ## Redaction map (consent absent)
41
+
42
+ | Class | Placeholder |
43
+ |---|---|
44
+ | Customer company name | `[CUSTOMER_COMPANY]` or "a Fortune 500 retailer" / "a mid-market SaaS" |
45
+ | Customer contact name | `[CONTACT_NAME]` |
46
+ | Customer logo | omit — request approval separately |
47
+ | Direct quote | paraphrase as `[PARAPHRASED_QUOTE]` |
48
+ | Specific metrics tied to one customer | round / range (e.g., "≈40% faster") |
49
+
50
+ ## Example
51
+
52
+ **Input (no consent cited):** *"Write a LinkedIn post about how Acme Corp cut their close time by 47%"*
53
+
54
+ **Right output:**
55
+ > One of our mid-market SaaS customers cut their close time by ≈45% in the first quarter. Here's how the workflow shift played out…
56
+
57
+ ## See also
58
+
59
+ - `skill:privacy-review` — consent shape audit.
60
+ - `domain-safety-disclaimer-consulting` — when claims carry advisory weight.
@@ -0,0 +1,56 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Drafting candidate notes, interview scorecards, rejection emails, or hiring memos — redact candidate PII before output"
5
+ source: package
6
+ triggers:
7
+ - keyword: "candidate"
8
+ - keyword: "interview notes"
9
+ - keyword: "scorecard"
10
+ - keyword: "rejection email"
11
+ - keyword: "offer letter"
12
+ - keyword: "hiring memo"
13
+ - phrase: "draft feedback for"
14
+ routes_to:
15
+ - "skill:privacy-review"
16
+ applies_to_user_types:
17
+ - "recruiting"
18
+ - "hr"
19
+ ---
20
+
21
+ # Domain Safety — PII Redaction (Recruiting)
22
+
23
+ ## Iron Law
24
+
25
+ ```
26
+ CANDIDATE PII NEVER LEAVES THE ATS BOUNDARY VIA AN AI-DRAFTED ARTIFACT.
27
+ SCORECARDS, REJECTION EMAILS, AND HIRING MEMOS USE PLACEHOLDERS.
28
+ ```
29
+
30
+ Recruiting drafts touch the most regulated PII class in most jurisdictions (special-category data under GDPR if the role surfaces it; protected-class data under US EEO). Redact candidate identity, demographic markers, and current-employer context before drafting. Only the hiring manager handles raw values inside the ATS.
31
+
32
+ ## Redaction map
33
+
34
+ | Class | Placeholder |
35
+ |---|---|
36
+ | Candidate full name | `[CANDIDATE_NAME]` |
37
+ | Candidate email | `[CANDIDATE_EMAIL]` |
38
+ | Current employer | `[CURRENT_EMPLOYER]` |
39
+ | University / alma mater | `[UNIVERSITY]` |
40
+ | Demographic markers (age, gender, ethnicity, family status) | omit entirely — never echo |
41
+ | Salary expectation | `[COMP_TARGET]` |
42
+ | Personal phone | `[PHONE]` |
43
+
44
+ ## Example
45
+
46
+ **Input:** *"Draft rejection for Sarah Chen, currently at Google, Stanford BS CS"*
47
+
48
+ **Right output (template):**
49
+ > Dear [CANDIDATE_NAME], thank you for interviewing for [ROLE]. After careful consideration we have decided to move forward with other candidates…
50
+
51
+ Never include current employer, education, or any demographic marker in the drafted artifact — they belong in the ATS record, not in the email body.
52
+
53
+ ## See also
54
+
55
+ - `skill:privacy-review` — EEO + GDPR special-category read.
56
+ - `domain-safety-disclaimer-legal` — companion when rejections cite legal grounds.
@@ -0,0 +1,57 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Generating support macros, ticket responses, or help-desk drafts — redact customer PII before output (names, emails, phones, account IDs, addresses)"
5
+ source: package
6
+ triggers:
7
+ - keyword: "support macro"
8
+ - keyword: "ticket response"
9
+ - keyword: "help desk"
10
+ - keyword: "customer reply"
11
+ - keyword: "Zendesk"
12
+ - keyword: "Intercom"
13
+ - phrase: "draft a response to"
14
+ routes_to:
15
+ - "skill:privacy-review"
16
+ applies_to_user_types:
17
+ - "support"
18
+ - "gtm"
19
+ ---
20
+
21
+ # Domain Safety — PII Redaction (Support)
22
+
23
+ ## Iron Law
24
+
25
+ ```
26
+ NO REAL CUSTOMER PII IN ANY SUPPORT-DRAFT OUTPUT.
27
+ REDACT BEFORE GENERATING. PLACEHOLDERS ONLY.
28
+ ```
29
+
30
+ When a prompt asks for a support macro, ticket response, or help-desk template — replace any PII the user pasted in with placeholders **before** drafting. Never echo a real customer name, email, phone number, or account ID into the response template.
31
+
32
+ ## Redaction map
33
+
34
+ | Class | Placeholder |
35
+ |---|---|
36
+ | Full name | `[CUSTOMER_NAME]` |
37
+ | First name only | `[FIRST_NAME]` |
38
+ | Email | `[EMAIL]` |
39
+ | Phone | `[PHONE]` |
40
+ | Account / order ID | `[ACCOUNT_ID]` / `[ORDER_ID]` |
41
+ | Postal address | `[ADDRESS]` |
42
+ | IBAN / card last-4 | `[PAYMENT_DETAILS]` |
43
+
44
+ ## Example
45
+
46
+ **Input:** *"Draft macro for refund from john.doe@example.com order #A-9921"*
47
+
48
+ **Wrong output:**
49
+ > Hi John, your refund for order A-9921 has been processed…
50
+
51
+ **Right output:**
52
+ > Hi [FIRST_NAME], your refund for order [ORDER_ID] has been processed…
53
+
54
+ ## See also
55
+
56
+ - `skill:privacy-review` — regulatory-regime read (GDPR / CCPA).
57
+ - `domain-safety-logging-pii-floor` — companion rule for never logging raw PII.
@@ -0,0 +1,48 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Finance data retention guidance — flag jurisdiction dependence, default to longest applicable retention, never delete records under audit hold"
5
+ source: package
6
+ triggers:
7
+ - keyword: "retention policy"
8
+ - keyword: "data retention"
9
+ - keyword: "record retention"
10
+ - keyword: "delete financial"
11
+ - keyword: "purge invoice"
12
+ - phrase: "how long should we keep"
13
+ - phrase: "when can we delete"
14
+ routes_to:
15
+ - "skill:data-handling-judgment"
16
+ applies_to_user_types:
17
+ - "finance"
18
+ - "ops"
19
+ ---
20
+
21
+ # Domain Safety — Finance Record Retention
22
+
23
+ ## Iron Law
24
+
25
+ ```
26
+ WHEN ASKED HOW LONG TO KEEP FINANCIAL RECORDS — NAME THE JURISDICTION GAP
27
+ AND DEFAULT TO THE LONGEST APPLICABLE FLOOR. NEVER RECOMMEND DELETION
28
+ OF RECORDS UNDER AUDIT HOLD, LITIGATION HOLD, OR REGULATORY INQUIRY.
29
+ ```
30
+
31
+ Retention questions look operational but are regulatory minefields: tax-authority floors, statute-of-limitations windows, GAAP / IFRS requirements, and contractual obligations stack non-trivially. A wrong "delete after 3 years" recommendation can destroy evidence in a future tax audit or litigation.
32
+
33
+ ## Required surface in every retention answer
34
+
35
+ 1. **Jurisdiction gap.** *"Retention floor depends on jurisdiction — name yours."* Then provide ranges if known (e.g., US-federal-tax: 7 years from filing; EU VAT: 10 years in DE/AT, 6 in UK post-Brexit).
36
+ 2. **Audit / litigation hold check.** *"If any of these apply, do not delete: open tax audit, pending litigation, regulatory inquiry, contractual record-keeping clause, criminal investigation."*
37
+ 3. **Longest-floor default.** When multiple floors apply, the longest wins. Document the chosen floor.
38
+ 4. **Disclaimer.** Append the financial-disclaimer footer from `domain-safety-disclaimer-financial`.
39
+
40
+ ## Refusal triggers
41
+
42
+ - *"Delete all invoices older than 2 years"* (without jurisdiction context) → refuse + ask the jurisdiction-gap question.
43
+ - *"We're under SEC investigation — can we clean up old emails?"* → hard refuse; flag spoliation risk; redirect to counsel.
44
+
45
+ ## See also
46
+
47
+ - `skill:data-handling-judgment` — retention + transfer cognition.
48
+ - `domain-safety-disclaimer-financial` — companion advisory disclaimer.
@@ -0,0 +1,55 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "Support / CRM data retention guidance — surface DSR-readiness, consent-window expiry, ticket-body retention vs. analytics aggregate retention"
5
+ source: package
6
+ triggers:
7
+ - keyword: "ticket retention"
8
+ - keyword: "CRM retention"
9
+ - keyword: "DSAR"
10
+ - keyword: "data subject request"
11
+ - keyword: "right to be forgotten"
12
+ - phrase: "delete customer data"
13
+ - phrase: "how long do we keep tickets"
14
+ routes_to:
15
+ - "skill:data-handling-judgment"
16
+ - "skill:privacy-review"
17
+ applies_to_user_types:
18
+ - "support"
19
+ - "gtm"
20
+ ---
21
+
22
+ # Domain Safety — Support / CRM Retention
23
+
24
+ ## Iron Law
25
+
26
+ ```
27
+ SUPPORT-DATA RETENTION ANSWERS DISTINGUISH RAW TICKET BODY (PII-LADEN)
28
+ FROM AGGREGATE ANALYTICS (DE-IDENTIFIED). DSR-READINESS IS THE FLOOR,
29
+ NOT THE CEILING.
30
+ ```
31
+
32
+ The right answer to *"how long do we keep tickets?"* is almost never a single number — it's a two-track policy. Raw ticket bodies contain PII and must respect deletion requests on a DSR clock (typically 30 days under GDPR). De-identified aggregate analytics (resolution times, category counts) can persist indefinitely for product / ops insight.
33
+
34
+ ## Required structure in every support-retention answer
35
+
36
+ 1. **Two tracks.** Raw ticket body + attachments (PII): short retention with DSR honoring. Aggregate metrics (de-identified): long retention OK.
37
+ 2. **Consent-window check.** If consent was time-bound (e.g., "we'll keep your data for 12 months for support quality"), name the expiry and the deletion job that must run.
38
+ 3. **DSR readiness.** *"You must be able to honor a deletion request within [N] days. The system needs a query that finds every ticket + attachment + log line tied to one customer."*
39
+ 4. **Backup retention gotcha.** *"Backups also contain PII. Either purge on the same DSR clock or document that backups are inaccessible and rotate within [N] days."*
40
+
41
+ ## Default floors (cite, then qualify)
42
+
43
+ | Class | Typical floor | Driver |
44
+ |---|---|---|
45
+ | Raw ticket body | 12-24 months from close | Consent window + DSR readiness |
46
+ | Attachments with PII | 6-12 months | Higher leak risk → shorter |
47
+ | Aggregate analytics (de-identified) | Indefinite | No PII linkage |
48
+ | Quality-assurance recordings | 30-90 days | Consent typically narrow |
49
+
50
+ Verify against the customer's privacy notice, regulatory regime, and contractual data-processing agreements before locking values.
51
+
52
+ ## See also
53
+
54
+ - `skill:data-handling-judgment` — retention + DSR shape.
55
+ - `skill:privacy-review` — regulatory-regime read.
@@ -5,6 +5,9 @@ personas:
5
5
  - backend-architect
6
6
  source: package
7
7
  domain: engineering
8
+ recommended_for_user_types: [developer, founder]
9
+
10
+
8
11
  ---
9
12
 
10
13
  # api-design
@@ -6,6 +6,9 @@ personas:
6
6
  - backend-architect
7
7
  source: package
8
8
  domain: quality
9
+ recommended_for_user_types: [developer, ops]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # authz-review
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: process
8
8
  context_spine: [customer-segment, product, org-stage]
9
+ recommended_for_user_types: [consultant, founder]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # competitive-moat-analysis
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: product
8
8
  context_spine: [product]
9
+ recommended_for_user_types: [consultant, gtm, founder]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # competitive-positioning
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: product
8
8
  context_spine: [product, customer-segment, channel-stage, funnel-stage]
9
+ recommended_for_user_types: [creator, gtm]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # content-funnel-design
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: process
8
8
  context_spine: [regulatory-regime, customer-segment, org-stage]
9
+ recommended_for_user_types: [consultant, finance, ops]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # contracts-cognition
@@ -3,6 +3,9 @@ name: dashboard-design
3
3
  description: "Use when designing monitoring dashboards — visualization selection, layout principles, observability strategies (RED/USE/Golden Signals), and data storytelling."
4
4
  source: package
5
5
  domain: devops
6
+ recommended_for_user_types: [ops, gtm]
7
+
8
+
6
9
  ---
7
10
 
8
11
  # dashboard-design
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: process
8
8
  context_spine: [regulatory-regime, customer-segment, product]
9
+ recommended_for_user_types: [ops, finance]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # data-handling-judgment
@@ -5,6 +5,9 @@ status: active
5
5
  tier: senior
6
6
  source: package
7
7
  domain: product
8
+ recommended_for_user_types: [finance]
9
+
10
+
8
11
  ---
9
12
 
10
13
  # dcf-modeling
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: product
8
8
  context_spine: [product, customer-segment]
9
+ recommended_for_user_types: [gtm]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # deal-qualification-meddic
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: product
8
8
  context_spine: [product]
9
+ recommended_for_user_types: [consultant, founder]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # discovery-interview
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: product
8
8
  context_spine: [product, customer-segment, channel-stage, funnel-stage]
9
+ recommended_for_user_types: [creator]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # editorial-calendar
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: product
8
8
  context_spine: [product, customer-segment]
9
+ recommended_for_user_types: [gtm, finance]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # forecast-accuracy
@@ -6,6 +6,9 @@ tier: senior
6
6
  source: package
7
7
  domain: process
8
8
  context_spine: [product, fiscal-period, customer-segment]
9
+ recommended_for_user_types: [finance, founder]
10
+
11
+
9
12
  ---
10
13
 
11
14
  # forecasting