Pre-flight Check
Before proceeding, verify you are in a scaffolded Cribl app folder. If you are not, stop and tell the user: "You must run this skill from within a scaffolded Cribl app folder."
Trigger: Run this skill in the same folder where the APP_DEFINITION.md resides.
Input: Contents of APP_DEFINITION.md (and optionally existing APP_BRIEF.md if updating)
Output: A comprehensive app brief (with full editing capability) that Claude Code can use to implement the app which is stored in APP_BRIEF.md
How to Use
cd into the app directory
- Run this skill:
/app-brief
- First run: Creates
APP_BRIEF.md from the definition
- Subsequent runs: Updates
APP_BRIEF.md based on changes to APP_DEFINITION.md
- Review and edit the generated brief
- Run the
/app-validate skill
- If validation fails, fix the brief.
- Pass the contents of
app-brief to your agentic tool (Claude Code)
Skill Workflow
Step 1: Check for Existing Brief
- If
APP_BRIEF.md does not exist: Run the "Generate the Brief" workflow (see below)
- If
APP_BRIEF.md already exists: Run the "Update the Brief" workflow (see below)
Step 2A: Generate the Brief (First Run)
If APP_BRIEF.md does not exist, generate the implementation brief from scratch based on answers provided in APP_DEFINITION.md
# [App Name] - App Brief
## App ID
[The unique identifier for this app]
## Problem & Vision
[Summary of the problem the app solves and how users benefit]
## Target Users
[Who uses this app and what they're trying to accomplish]
## Key Workflows
### Workflow 1: [Name]
- **User sees**: [What appears on screen]
- **User does**: [What they click/configure/select]
- **Result**: [What gets created/changed/shown]
- **Permissions**: [Who can do this? Any restrictions?]
### Workflow 2: [Name]
- **User sees**: [What appears on screen]
- **User does**: [What they click/configure/select]
- **Result**: [What gets created/changed/shown]
- **Permissions**: [Who can do this? Any restrictions?]
[+ Additional workflows as needed]
## Data & Actions
**The app will fetch from Cribl:**
- [Resource type 1]: [Why? Used in which workflow?]
- [Resource type 2]: [Why? Used in which workflow?]
**The app will create/modify/delete in Cribl:**
- [Resource type 1]: [Which workflow creates/modifies/deletes this?]
- [Resource type 2]: [Which workflow creates/modifies/deletes this?]
**The app will remember (general state):**
- [State 1]: [What should be saved? When should it persist?]
- [State 2]: [What should be saved? When should it persist?]
(Or "None" if no general state)
**User-specific settings (stored per user):**
- [Setting 1]: [What is it? Which user(s) need it?]
- [Setting 2]: [What is it? Which user(s) need it?]
(Or "None" if no per-user settings)
**Secure secrets:**
- [Secret 1]: [What is it? How is it used?]
- [Secret 2]: [What is it? How is it used?]
(Or "None" if no secrets)
## UI Structure
### Overall Layout
[Recommended structure: wizard, dashboard, form, table, etc.]
### Key Screens/Pages
1. **[Screen Name]**: [What it shows, what user can interact with]
2. **[Screen Name]**: [What it shows, what user can interact with]
3. **[Screen Name]**: [What it shows, what user can interact with]
[Add more screens as needed]
## Permissions & Access
- **Who can use this app?**: [All members, or specific roles?]
- **Permission-aware behavior**: [How does the app respond if a user lacks access to an action?]
## External Integrations (if any)
- **[Service name]**: [What does the app do with it?]
- **[Service name]**: [What does the app do with it?]
(Or "None" if the app only works with Cribl)
## MVP Scope
**Must-have:**
- [Feature 1]
- [Feature 2]
**Nice-to-have (defer):**
- [Feature 1]
- [Feature 2]
**Out of scope:**
- [Feature 1]
## Edge Cases & Error Handling
- **If user lacks permission**: [What should the app show?]
- **If data is unavailable**: [What should the app show?]
- **If an action fails**: [What should the app show?]
## Implementation guidance (include this section verbatim)
- Read AGENTS.md first
- Then read openapi.json
- NEVER EVER use local storage
---
Step 2B: Update the Brief (Subsequent Runs)
If APP_BRIEF.md already exists, intelligently update it based on changes to APP_DEFINITION.md:
Detection & Merging Logic:
Compare the two files to identify what changed in APP_DEFINITION.md:
- App ID changed
- New workflows added
- Workflows modified (name changed, description changed, or steps changed)
- New data requirements (new fetch sources, create/modify/delete operations, state fields)
- New UI screens or layout changes
- New scope items (must-have, nice-to-have, out-of-scope)
- Changes to permissions, integrations, or edge cases
For new workflows: Add them to the "## Key Workflows" section in APP_BRIEF.md, following the same format as existing workflows
For modified workflows: Update the corresponding workflow section with the new details, preserving any elaborations or examples that were added to the brief but not in the definition
For new data requirements: Add them to the "## Data & Actions" section under the appropriate subsection (fetch, create/modify/delete, state, settings, secrets)
For new UI screens: Add them to the "## UI Structure" section's "Key Screens/Pages" list
For scope changes: Add new items to "## MVP Scope" under the appropriate subsection
For other changes: Update the relevant sections (Problem & Vision, Target Users, Permissions & Access, External Integrations, Edge Cases & Error Handling)
Preservation Rules:
- Never remove sections or workflows that exist in
APP_BRIEF.md but are not mentioned in the updated APP_DEFINITION.md
- Keep any elaborations, examples, or implementation details that were added to the brief beyond what was in the definition
- If a workflow description in the definition is more detailed, replace the brief's version; if the brief is more detailed, keep it
- Always preserve the "## Implementation guidance" section exactly as is
Output:
- Display a summary of what changed: "Added 1 new workflow: [name]. Updated 2 workflows: [names]. Added 3 data requirements."
- Save the updated brief back to
APP_BRIEF.md
- Show the user the updated sections for review
Workflow Exit
Once the brief is generated or updated, the final brief is ready for:
- First run: Review, edit if needed, then run
/app-validate to validate alignment
- Subsequent runs: Review the delta summary, check the updated sections, then commit changes via
/app-implement
Key Principles
- No technical jargon: Users describe problems; Claude figures out implementation
- Markdown persistence: Easy to read, edit, and version control
- Iterative updates: Brief can be regenerated/updated as requirements evolve
- Incremental updates: Only changed sections are rewritten; existing elaborations are preserved
- Direct file editing: Users can edit
APP_BRIEF.md directly for fast iteration
- APIs handled by Claude: Claude uses
openapi.json to determine which Cribl APIs to call
- User-specific storage: Per-user settings automatically prefixed with user ID
- MVP-first: Encourage shipping the minimum and iterating
- External integrations only: List third-party services if the app calls them
- Single source of truth:
APP_DEFINITION.md is the authoritative source; changes there drive brief updates
Example Workflow: Adding a New Feature
- Edit
APP_DEFINITION.md to add a new workflow (e.g., "Bulk enable/disable integrations")
- Run
/app-brief — the skill detects the new workflow and adds it to the brief
- Review the updated brief to see the new workflow integrated with existing ones
- Run
/app-validate to ensure the updated brief is sound
- Run
/app-implement to implement the new workflow
Resources
1---2name: app-brief3description: Generates the app brief from the app definition, or updates it if APP_BRIEF.md already exists4---56<command-name>7app-brief8</command-name>910<command-description>11Generate or update the app brief based on APP_DEFINITION.md. On first run, creates APP_BRIEF.md from scratch. On subsequent runs, detects changes to APP_DEFINITION.md and updates the existing brief incrementally.12</command-description>1314<command-examples>15/app-brief16</command-examples>1718## Pre-flight Check1920Before proceeding, verify you are in a scaffolded Cribl app folder. If you are not, stop and tell the user: "You must run this skill from within a scaffolded Cribl app folder."2122**Trigger:** Run this skill in the same folder where the `APP_DEFINITION.md` resides.2324**Input:** Contents of `APP_DEFINITION.md` (and optionally existing `APP_BRIEF.md` if updating)2526**Output:** A comprehensive app brief (with full editing capability) that Claude Code can use to implement the app which is stored in `APP_BRIEF.md`2728## How to Use29301. `cd` into the app directory312. Run this skill: `/app-brief`32 - **First run**: Creates `APP_BRIEF.md` from the definition33 - **Subsequent runs**: Updates `APP_BRIEF.md` based on changes to `APP_DEFINITION.md`343. Review and edit the generated brief354. Run the `/app-validate` skill365. If validation fails, fix the brief.376. Pass the contents of `app-brief` to your agentic tool (Claude Code)3839## Skill Workflow4041### Step 1: Check for Existing Brief4243- If `APP_BRIEF.md` does not exist: Run the "Generate the Brief" workflow (see below)44- If `APP_BRIEF.md` already exists: Run the "Update the Brief" workflow (see below)4546### Step 2A: Generate the Brief (First Run)4748If `APP_BRIEF.md` does not exist, generate the implementation brief from scratch based on answers provided in `APP_DEFINITION.md`4950```markdown51# [App Name] - App Brief5253## App ID54[The unique identifier for this app]5556## Problem & Vision57[Summary of the problem the app solves and how users benefit]5859## Target Users60[Who uses this app and what they're trying to accomplish]6162## Key Workflows63### Workflow 1: [Name]64- **User sees**: [What appears on screen]65- **User does**: [What they click/configure/select]66- **Result**: [What gets created/changed/shown]67- **Permissions**: [Who can do this? Any restrictions?]6869### Workflow 2: [Name]70- **User sees**: [What appears on screen]71- **User does**: [What they click/configure/select]72- **Result**: [What gets created/changed/shown]73- **Permissions**: [Who can do this? Any restrictions?]7475[+ Additional workflows as needed]7677## Data & Actions78**The app will fetch from Cribl:**79- [Resource type 1]: [Why? Used in which workflow?]80- [Resource type 2]: [Why? Used in which workflow?]8182**The app will create/modify/delete in Cribl:**83- [Resource type 1]: [Which workflow creates/modifies/deletes this?]84- [Resource type 2]: [Which workflow creates/modifies/deletes this?]8586**The app will remember (general state):**87- [State 1]: [What should be saved? When should it persist?]88- [State 2]: [What should be saved? When should it persist?]8990(Or "None" if no general state)9192**User-specific settings (stored per user):**93- [Setting 1]: [What is it? Which user(s) need it?]94- [Setting 2]: [What is it? Which user(s) need it?]9596(Or "None" if no per-user settings)9798**Secure secrets:**99- [Secret 1]: [What is it? How is it used?]100- [Secret 2]: [What is it? How is it used?]101102(Or "None" if no secrets)103104## UI Structure105### Overall Layout106[Recommended structure: wizard, dashboard, form, table, etc.]107108### Key Screens/Pages1091. **[Screen Name]**: [What it shows, what user can interact with]1102. **[Screen Name]**: [What it shows, what user can interact with]1113. **[Screen Name]**: [What it shows, what user can interact with]112113[Add more screens as needed]114115## Permissions & Access116- **Who can use this app?**: [All members, or specific roles?]117- **Permission-aware behavior**: [How does the app respond if a user lacks access to an action?]118119## External Integrations (if any)120- **[Service name]**: [What does the app do with it?]121- **[Service name]**: [What does the app do with it?]122123(Or "None" if the app only works with Cribl)124125## MVP Scope126**Must-have:**127- [Feature 1]128- [Feature 2]129130**Nice-to-have (defer):**131- [Feature 1]132- [Feature 2]133134**Out of scope:**135- [Feature 1]136137## Edge Cases & Error Handling138- **If user lacks permission**: [What should the app show?]139- **If data is unavailable**: [What should the app show?]140- **If an action fails**: [What should the app show?]141142## Implementation guidance (include this section verbatim)143- Read AGENTS.md first144- Then read openapi.json145- NEVER EVER use local storage 146147---148```149150### Step 2B: Update the Brief (Subsequent Runs)151152If `APP_BRIEF.md` already exists, intelligently update it based on changes to `APP_DEFINITION.md`:153154**Detection & Merging Logic:**1551. Compare the two files to identify what changed in `APP_DEFINITION.md`:156 - App ID changed157 - New workflows added158 - Workflows modified (name changed, description changed, or steps changed)159 - New data requirements (new fetch sources, create/modify/delete operations, state fields)160 - New UI screens or layout changes161 - New scope items (must-have, nice-to-have, out-of-scope)162 - Changes to permissions, integrations, or edge cases1631642. **For new workflows**: Add them to the "## Key Workflows" section in `APP_BRIEF.md`, following the same format as existing workflows1651663. **For modified workflows**: Update the corresponding workflow section with the new details, preserving any elaborations or examples that were added to the brief but not in the definition1671684. **For new data requirements**: Add them to the "## Data & Actions" section under the appropriate subsection (fetch, create/modify/delete, state, settings, secrets)1691705. **For new UI screens**: Add them to the "## UI Structure" section's "Key Screens/Pages" list1711726. **For scope changes**: Add new items to "## MVP Scope" under the appropriate subsection1731747. **For other changes**: Update the relevant sections (Problem & Vision, Target Users, Permissions & Access, External Integrations, Edge Cases & Error Handling)175176**Preservation Rules:**177- Never remove sections or workflows that exist in `APP_BRIEF.md` but are not mentioned in the updated `APP_DEFINITION.md`178- Keep any elaborations, examples, or implementation details that were added to the brief beyond what was in the definition179- If a workflow description in the definition is more detailed, replace the brief's version; if the brief is more detailed, keep it180- Always preserve the "## Implementation guidance" section exactly as is181182**Output:**183- Display a summary of what changed: "Added 1 new workflow: [name]. Updated 2 workflows: [names]. Added 3 data requirements."184- Save the updated brief back to `APP_BRIEF.md`185- Show the user the updated sections for review186187## Workflow Exit188189Once the brief is generated or updated, the final brief is ready for:190- **First run**: Review, edit if needed, then run `/app-validate` to validate alignment191- **Subsequent runs**: Review the delta summary, check the updated sections, then commit changes via `/app-implement`192193---194195## Key Principles196197- **No technical jargon**: Users describe problems; Claude figures out implementation198- **Markdown persistence**: Easy to read, edit, and version control199- **Iterative updates**: Brief can be regenerated/updated as requirements evolve200- **Incremental updates**: Only changed sections are rewritten; existing elaborations are preserved201- **Direct file editing**: Users can edit `APP_BRIEF.md` directly for fast iteration202- **APIs handled by Claude**: Claude uses `openapi.json` to determine which Cribl APIs to call203- **User-specific storage**: Per-user settings automatically prefixed with user ID204- **MVP-first**: Encourage shipping the minimum and iterating205- **External integrations only**: List third-party services if the app calls them206- **Single source of truth**: `APP_DEFINITION.md` is the authoritative source; changes there drive brief updates207208## Example Workflow: Adding a New Feature2092101. Edit `APP_DEFINITION.md` to add a new workflow (e.g., "Bulk enable/disable integrations")2112. Run `/app-brief` — the skill detects the new workflow and adds it to the brief2123. Review the updated brief to see the new workflow integrated with existing ones2134. Run `/app-validate` to ensure the updated brief is sound2145. Run `/app-implement` to implement the new workflow215216## Resources217218- **Cribl Apps Docs**: https://docs.cribl.io/apps/219- **Builder Guide**: https://docs.cribl.io/apps/builder-guide/220- **GitHub Examples**: https://github.com/criblapps and https://github.com/Cribl-Community221