arckit-presentation
$
npx mdskill add tractorjuice/arc-kit/arckit-presentationGenerate governance-ready MARP slides from ArcKit artifacts
- Creates slide decks summarizing architecture, risks, and roadmaps
- Reads project directories, ARC artifacts, and global policies
- Selects content by matching user input to existing project data
- Outputs formatted markdown files compatible with MARP rendering
SKILL.md
.github/skills/arckit-presentationView on GitHub ↗
---
name: arckit-presentation
description: "Generate MARP presentation slides from existing project artifacts for governance boards and stakeholder briefings"
---
You are helping an enterprise architect **generate a MARP-format presentation** from existing ArcKit project artifacts. The presentation summarises the project's architecture, requirements, risks, and roadmap in a slide deck suitable for governance boards, stakeholder briefings, and gate reviews.
This command creates an **ARC-{PROJECT_ID}-PRES-v1.0.md** document that serves as:
- A slide deck in [MARP](https://marp.app/) format (renders to PDF/PPTX/HTML via MARP CLI or VS Code extension)
- A governance-ready summary drawing from existing ArcKit artifacts
- A tailored presentation for different audiences (executive, technical, stakeholder)
## User Input
```text
$ARGUMENTS
```
## Instructions
> **Note**: Before generating, scan `projects/` for existing project directories. For each project, list all `ARC-*.md` artifacts, check `external/` for reference documents, and check `000-global/` for cross-project policies. If no external docs exist but they would improve output, ask the user.
### Step 1: Identify the target project
- Use the **ArcKit Project Context** (above) to find the project matching the user's input (by name or number)
- If no match, create a new project:
1. Use Glob to list `projects/*/` directories and find the highest `NNN-*` number (or start at `001` if none exist)
2. Calculate the next number (zero-padded to 3 digits, e.g., `002`)
3. Slugify the project name (lowercase, replace non-alphanumeric with hyphens, trim)
4. Use the Write tool to create `projects/{NNN}-{slug}/README.md` with the project name, ID, and date — the Write tool will create all parent directories automatically
5. Also create `projects/{NNN}-{slug}/external/README.md` with a note to place external reference documents here
6. Set `PROJECT_ID` = the 3-digit number, `PROJECT_PATH` = the new directory path
### Step 2: Read existing artifacts from the project context
**MANDATORY** (warn if missing):
- **PRIN** (Architecture Principles, in `projects/000-global/`)
- Extract: Governance standards, technology constraints, compliance framework
- If missing: warn user to run `$arckit-principles` first
**RECOMMENDED** (read if available, note if missing):
- **STKE** (Stakeholder Analysis) — personas, goals, priorities → Stakeholder slide
- **REQ** (Requirements) — BR/FR/NFR/INT/DR counts and critical items → Requirements slide
- **RISK** (Risk Register) — top risks, mitigations, distribution → Risk slide
- **PLAN** (Project Plan) — phases, milestones, Gantt → Timeline slide
- **ROAD** (Roadmap) — delivery roadmap → Roadmap slide
- **STRAT** (Architecture Strategy) — vision, decisions → Context slide
- **SOBC** (Business Case) — benefits, costs, ROI → Executive summary
- **DIAG** (Architecture Diagrams) — C4, deployment, data flow → Architecture slide
- **WARD** (Wardley Map) — strategic positioning → Strategy slide
- **RSCH** / **AWSR** / **AZUR** / **GCRS** — technology research → Technology decisions
- **SOW** / **DOS** — procurement → Procurement status
- **HLDR** / **DLDR** (Design Reviews) → Quality assurance
- **TCOP** / **SECD** / **MSBD** — compliance assessments → Compliance slide
- **DPIA** (DPIA) → Data protection
- **AIPB** / **ATRS** — AI governance → AI compliance
- **DEVOPS** (DevOps Strategy) → Delivery approach
**Minimum artifact check**: A meaningful presentation requires at least 3 artifacts. If the project has fewer than 3, warn:
```text
⚠️ Warning: This project only has [N] artifacts.
A useful presentation typically requires at least:
- Architecture principles (global)
- Stakeholder analysis or requirements
- Risk register or project plan
Run more /arckit commands first, then re-run $arckit-presentation.
```
### Step 3: Interactive Configuration
Before generating the presentation, use the **AskUserQuestion** tool to gather preferences. **Skip any question the user has already answered in their arguments.**
**Gathering rules** (apply to all questions in this section):
- Ask the most important question first; fill in secondary details from context or reasonable defaults.
- **Maximum 2 rounds of questions.** After that, pick the best option from available context.
- If still ambiguous after 2 rounds, choose the (Recommended) option and note: *"I went with [X] — easy to adjust if you prefer [Y]."*
**Question 1** — header: `Focus`, multiSelect: false
> "What audience is this presentation for?"
- **Executive (Recommended)**: High-level summary — business case, timeline, risks, decisions needed. Fewer slides, minimal technical detail.
- **Technical**: Architecture detail — diagrams, technology decisions, integration points, data model. More slides, Mermaid diagrams.
- **Stakeholder**: Benefits-focused — user impact, timeline, risks, change management. Balanced detail, emphasis on outcomes.
- **Procurement**: Vendor-focused — requirements summary, evaluation criteria, timeline, contract structure. For RFP briefings.
**Question 2** — header: `Slides`, multiSelect: false
> "How many slides should the presentation contain?"
- **10-12 slides (Recommended)**: Standard governance board deck — covers all key areas concisely
- **6-8 slides**: Brief update — executive summary, key decisions, next steps only
- **15-20 slides**: Comprehensive briefing — detailed sections with supporting data and diagrams
Apply the user's selections: the focus determines which artifacts are emphasised and the level of technical detail. The slide count constrains how much content is included per section.
### Step 4: Read the template (with user override support)
- **First**, check if `.arckit/templates/presentation-template.md` exists in the project root
- **If found**: Read the user's customized template (user override takes precedence)
- **If not found**: Read `.arckit/templates/presentation-template.md` (default)
> **Tip**: Users can customize templates with `$arckit-customize presentation`
### Step 4b: Load Mermaid Syntax References
Read `.arckit/skills/mermaid-syntax/references/quadrantChart.md`, `.arckit/skills/mermaid-syntax/references/c4.md`, `.arckit/skills/mermaid-syntax/references/pie.md`, and `.arckit/skills/mermaid-syntax/references/gantt.md` for official Mermaid syntax — quadrant chart axes, C4 diagram elements, pie chart syntax, date formats, and styling options.
### Step 5: Generate the MARP presentation
Build the slide deck by extracting key content from each artifact:
**Title Slide**: Project name, date, classification, presenter/team
**Context & Objectives** (from STRAT, SOBC, REQ):
- Business challenge and strategic opportunity
- Key objectives and success criteria
**Stakeholder Landscape** (from STKE):
- Key stakeholders with roles, interest, and influence
- Mermaid quadrant chart if data available (see Mermaid label rules below)
**Architecture Overview** (from DIAG, STRAT):
- Current state summary and pain points
- Target state and key changes
- Embed Mermaid C4 context diagram or reference existing diagrams
**Technology Decisions** (from RSCH, AWSR, AZUR, GCRS, ADR):
- Key build vs buy decisions
- Technology choices with rationale
**Key Requirements** (from REQ):
- Summary counts by category (BR/FR/NFR/INT/DR)
- Top 3-5 critical requirements
**Risk Summary** (from RISK):
- Top 3-5 risks with likelihood/impact/mitigation
- Mermaid pie chart of risk distribution
**Roadmap & Timeline** (from PLAN, ROAD):
- Mermaid Gantt chart of project phases
- Key milestones with status
**Compliance & Governance** (from TCOP, SECD, MSBD, DPIA, AIPB):
- Standards compliance status table
- Only include if UK Government or compliance-heavy project
**Recommendations & Next Steps**:
- Immediate actions with owners and deadlines
- Decisions required from the audience
**Questions & Discussion**: Contact details and next review date
**Slide count guidelines**:
- **6-8 slides**: Title + Context + Architecture + Requirements + Risks + Timeline + Next Steps
- **10-12 slides**: All of the above + Stakeholders + Technology Decisions + Compliance + Questions
- **15-20 slides**: All sections expanded with additional detail slides, data model, integration points
### Step 6: MARP formatting rules
- Use `---` between slides (MARP slide separator)
- Include MARP YAML frontmatter: `marp: true`, `theme: default`, `paginate: true`
- Use `header` and `footer` for persistent slide branding
- Keep each slide to 3-5 bullet points or one table/diagram — avoid overloading
- Use Mermaid diagrams where data supports them (Gantt, pie, C4, quadrant)
- Use `<!-- fit -->` for headings that need auto-sizing
- Tables should have no more than 5 rows per slide
**Mermaid label rules** (applies to ALL Mermaid diagrams, especially `quadrantChart`):
- **No accented characters**: Use ASCII only in labels — replace é→e, í→i, ó→o, ñ→n, ü→u, etc.
- **No hyphens in data point labels**: Use spaces instead — e.g., `DST Cybersecurity` not `DST-Cybersecurity`
- **No special characters**: Avoid colons, parentheses, brackets, or quotes in labels
- These restrictions exist because Mermaid's parser breaks on non-ASCII and certain punctuation
### Step 7: Write the output
Before writing the file, read `.arckit/references/quality-checklist.md` and verify all **Common Checks** plus the **PRES** per-type checks pass. Fix any failures before proceeding.
- Write to `projects/{project-dir}/ARC-{PROJECT_ID}-PRES-v${VERSION}.md`
- Use the exact template structure with MARP frontmatter
**CRITICAL - Auto-Populate Document Control Fields**:
#### Step 7a: Detect Version
Before generating the document ID, check if a previous version exists:
1. Look for existing `ARC-{PROJECT_ID}-PRES-v*.md` files in the project directory
2. **If no existing file**: Use VERSION="1.0"
3. **If existing file found**:
- Read the existing document to understand its scope
- Compare against current inputs and requirements
- **Minor increment** (e.g., 1.0 → 1.1): Same focus and artifact set — refreshed content
- **Major increment** (e.g., 1.0 → 2.0): Different focus, significantly different artifact set, or new audience
4. Use the determined version for document ID, filename, Document Control, and Revision History
5. For v1.1+/v2.0+: Add a Revision History entry describing what changed from the previous version
#### Step 7b: Construct Document ID
- **Document ID**: `ARC-{PROJECT_ID}-PRES-v{VERSION}` (e.g., `ARC-001-PRES-v1.0`)
#### Step 7c: Populate Required Fields
**Auto-populated fields** (populate these automatically):
- `[PROJECT_ID]` → Extract from project path (e.g., "001" from "projects/001-project-name")
- `[VERSION]` → Determined version from Step 7a
- `[DATE]` / `[YYYY-MM-DD]` → Current date in YYYY-MM-DD format
- `[DOCUMENT_TYPE_NAME]` → "Architecture Presentation"
- `ARC-[PROJECT_ID]-PRES-v[VERSION]` → Construct using format from Step 7b
- `[COMMAND]` → "arckit.presentation"
**User-provided fields** (extract from project metadata or user input):
- `[PROJECT_NAME]` → Full project name from project metadata or user input
- `[OWNER_NAME_AND_ROLE]` → Document owner (prompt user if not in metadata)
- `[CLASSIFICATION]` → Default to "OFFICIAL" for UK Gov, "PUBLIC" otherwise (or prompt user)
**Pending fields** (leave as [PENDING] until manually updated):
- `[REVIEWER_NAME]` → [PENDING]
- `[APPROVER_NAME]` → [PENDING]
- `[DISTRIBUTION_LIST]` → Default to "Project Team, Architecture Team" or [PENDING]
#### Step 7d: Populate Revision History
```markdown
| 1.0 | {DATE} | ArcKit AI | Initial creation from `$arckit-presentation` command | [PENDING] | [PENDING] |
```
#### Step 7e: Populate Generation Metadata Footer
```markdown
**Generated by**: ArcKit `$arckit-presentation` command
**Generated on**: {DATE} {TIME} GMT
**ArcKit Version**: {ARCKIT_VERSION}
**Project**: {PROJECT_NAME} (Project {PROJECT_ID})
**AI Model**: [Use actual model name, e.g., "claude-sonnet-4-5-20250929"]
**Generation Context**: [Brief note about source documents used]
```
### Step 8: Summarize what you created
Show ONLY a concise summary after writing the file.
## Example Usage
User: `$arckit-presentation Generate executive presentation for NHS appointment booking`
You should:
- Find project 007-nhs-appointment
- Read all available artifacts (STKE, REQ, RISK, PLAN, DIAG, etc.)
- Ask about focus (executive) and slide count (10-12)
- Generate MARP slide deck with executive focus
- Write to `projects/007-nhs-appointment/ARC-007-PRES-v1.0.md`
- Show summary only
## Important Notes
- **MARP rendering**: The output `.md` file can be rendered using [MARP CLI](https://github.com/marp-team/marp-cli) (`marp --pdf ARC-001-PRES-v1.0.md`) or the [MARP for VS Code](https://marketplace.visualstudio.com/items?itemName=marp-team.marp-vscode) extension
- **Mermaid diagrams**: MARP supports Mermaid natively — use them for Gantt charts, pie charts, C4 diagrams, and quadrant charts
- This command **reads** existing artifacts and reformats them — it does not generate new analysis
- If no artifacts exist, recommend running `$arckit-plan` or `$arckit-requirements` first
- Keep slides concise: 3-5 bullets per slide, one table or diagram per slide
- For UK Government projects, include GDS Service Standard and TCoP compliance status
- **Markdown escaping**: When writing less-than or greater-than comparisons, always include a space after `<` or `>` (e.g., `< 3 seconds`, `> 99.9% uptime`) to prevent markdown renderers from interpreting them as HTML tags or emoji
## Resources
- [MARP Official Documentation](https://marp.app/)
- [MARP CLI](https://github.com/marp-team/marp-cli)
- [MARP Themes](https://github.com/marp-team/marp-core/tree/main/themes)
- [Mermaid Diagram Syntax](https://mermaid.js.org/)
## Output Instructions
**CRITICAL - Token Efficiency**:
### 1. Generate Presentation
Create the MARP slide deck following the template structure and user's focus/slide preferences.
### 2. Write Directly to File
**Use the Write tool** to create `projects/[PROJECT]/ARC-{PROJECT_ID}-PRES-v${VERSION}.md` with the complete presentation.
**DO NOT** output the full document in your response. This would exceed token limits.
### 3. Show Summary Only
After writing the file, show ONLY a concise summary:
```markdown
## Presentation Complete ✅
**Project**: [Project Name]
**File Created**: `projects/[PROJECT]/ARC-{PROJECT_ID}-PRES-v1.0.md`
### Presentation Summary
**Focus**: [Executive / Technical / Stakeholder / Procurement]
**Slides**: [N] slides
**Theme**: [default / gaia / uncover]
**Content Sources**:
- [List artifacts read and what was extracted from each]
**Slide Deck**:
1. Title — [Project name, date, classification]
2. Context & Objectives — [Key points]
3. Stakeholder Landscape — [Key stakeholders]
4. Architecture Overview — [Current → Target]
5. Key Requirements — [N] total ([N] BR, [N] FR, [N] NFR)
6. Risk Summary — [N] risks ([N] high, [N] medium, [N] low)
7. Roadmap — [Duration], [N] milestones
8. Next Steps — [N] actions, [N] decisions
**Rendering**:
- VS Code: Install [MARP for VS Code](https://marketplace.visualstudio.com/items?itemName=marp-team.marp-vscode) → Open file → Preview
- CLI: `marp --pdf ARC-{PROJECT_ID}-PRES-v1.0.md` (requires [MARP CLI](https://github.com/marp-team/marp-cli))
- HTML: `marp ARC-{PROJECT_ID}-PRES-v1.0.md` → opens in browser
### Next Steps
- Review slides for accuracy and completeness
- Customize MARP theme if needed (`theme: gaia` or `theme: uncover`)
- Export to PDF/PPTX: `marp --pdf` or `marp --pptx`
- Run `$arckit-story` for a full narrative companion document
```
Generate the presentation now, write to file using Write tool, and show only the summary above.