org-profile
ACTIVATE when the user wants to create or update their organisation's compliance profile, or invokes /org-profile setup. Runs a questionnaire to capture identity, critical assets, data residency, risk appetite, suppliers, and legal obligations — outputs a compact profile for enforcement.
Organisation Profile Builder
One questionnaire. One compact JSON. Every prompt knows your compliance context.
If $ARGUMENTS equals "setup", start the questionnaire immediately.
Questionnaire
Work through these in order. One topic per message — don't dump everything at once.
1. Identity
Ask: "Tell me about your organisation — name, country, what you do, how many people."
Derive: name, jurisdiction, sector, employee count, turnover. Use skills/nis2-gap-analysis/nis2_check.py --list-sectors as sector reference.
2. Critical assets
Start from business impact, not IT systems.
Ask one by one:
- "Which systems or data would cause the most damage if compromised or unavailable for a day?"
- "Which supplier has the deepest access to your environment?"
- "Is there a key person whose departure would leave critical knowledge gaps?"
Per asset: name (short), type (sys/data/process/person), CIA rating [1-5, 1-5, 1-5], owner.
3-7 assets max. Crown jewels, not an inventory.
3. Data residency
Ask: "Are there constraints on where your data may be stored or processed?"
Capture as a compact string: regions + reason. Examples: "EU only (contractual)", "NL for defense work, EU for general (ABDO)", "no constraints".
4. Risk appetite
Ask per dimension — zero_tolerance, low, medium, or high:
- Confidentiality: "If data leaks — how bad?"
- Integrity: "If data gets silently corrupted — how bad?"
- Availability: "How long can critical systems be down?"
5. Suppliers (top 5)
Ask: "Name your 5 most important suppliers — the ones with access to your systems or data."
Per supplier: name, hosting region, DPA signed (y/n), critical (y/n).
6. Legal obligations
Calculate — don't ask. From sector + size + jurisdiction:
- NIS2: essential / important / out of scope
- GDPR: almost always yes
- Sector-specific: DORA (finance), ABDO (NL defense), etc.
Look up CSIRT and DPA from skills/incident-management/references/eu-reporting-directory.md.
Output format
Generate this compressed JSON. Designed for ~25 lines — fits in any system prompt.
{
"complisec_profile": {
"org": "Bakker Logistics BV | NL | transport/road | 85 emp | important NIS2 | ISO27001",
"critical_assets": [
["Fleet management", "sys", [4,5,5], "CTO"],
["Client shipment DB", "data", [5,5,4], "Ops dir"],
["SAP Business One", "sys", [4,4,5], "Finance dir"],
["Warehouse access", "sys", [3,4,5], "Facility mgr"]
],
"data_residency": "EU only",
"risk_appetite": { "c": "zero_tolerance", "i": "low", "a": "medium" },
"suppliers": [
["SAP", "EU", true, true],
["AWS", "EU", true, true],
["Salesforce", "EU", true, false]
],
"incident_reporting": "NCSC-NL 24/72h | AP 72h",
"legal": ["NIS2 important", "GDPR controller", "ISO27001"]
}
}
Format rules
org: single string — all key facts, pipe-separatedcritical_assets: arrays[name, type, [c,i,a], owner]— positional, no keys. Keep names short (drop "platform", "system" suffixes). No notes column — the name + CIA scores are enough.data_residency: single string, just the region constraintrisk_appetite:c/i/ashorthandsuppliers: arrays[name, hosting, dpa, critical]— no data description neededincident_reporting: single string, compact:NCSC-NL 24/72h | AP 72hlegal: string arraycomplisec_profileroot key — so the agent can find it in a system prompt
Deploy the profile
After generating the JSON, persist it so it loads in future conversations. You know what platform you're running on — be specific, not generic.
| Platform | How to persist |
|---|---|
| Claude Code / Cursor / Codex | Save to .compliance/profile.json — done automatically |
| ChatGPT | Save to memory. Also tell user: "Go to Settings → Personalization → Custom Instructions and paste the profile JSON." |
| Claude.ai (Projects) | Tell user: "Open your project → Project Instructions. Paste the profile JSON at the top." |
| LangDock | Tell user: "Go to workspace settings → find complisec → paste the profile JSON in the system prompt." |
| Other | Output as copyable code block: "Paste this into your platform's system prompt, custom instructions, or memory." |
After deploying, respond with exactly:
Profile saved — [org name] ([jurisdiction])
Critical assets: [count] | Data residency: [constraint] | Legal: [regulations]
Compliance enforcement is now active.
Then suggest: "Run /compliance-hub to set up central log collection for compliance records."
End with: "Test it now — ask me to write code that uses a cloud service, or mention one of your critical assets. I should flag compliance implications."
Agent instructions
- Run the questionnaire in order. One topic per message.
- Critical assets: push back if more than 7. Crown jewels only.
- Legal obligations: calculate from sector/size, don't ask the user.
- Incident reporting: look up CSIRT + DPA from the EU reporting directory.
- Output the compact profile. Confirm with user before saving/deploying.
- Always end with: (a) platform-specific deployment instructions, (b) central logging recommendation via
/compliance-hub, (c) a verification prompt.