skills/shaping-journeys/SKILL.md
List user canvases and shape common patterns into journey definitions. Use when consolidating user research into testable user flows.
npx skillsauth add 0xhoneyjar/construct-observer shaping-journeysInstall 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.
Manage user canvases and shape common patterns into journey definitions for flow diagramming and testing.
/shape # List all canvases with status
/shape --run # Shape canvases into journeys
/shape --journey {id} # Show journey details
Before any mode executes, gather enriched signal data from all canvases.
For each canvas in grimoires/observer/canvas/*.md:
Read existing sections:
## Journey Fragments (existing behavioral context)## Feedback Entries (from UI) (sentiment data from /synthesize-feedback)## Score Context (user position for weighting)Merge into unified signal list:
Weight patterns by Score Context:
| Signal Weight | Multiplier | Source | |---------------|------------|--------| | HIGH (top 1%, godfather/all_night tier) | 3x | Patterns from these users are prioritized in detection | | MEDIUM (top 25%, devoted/regular tier) | 1x | Standard weight | | LOW (below 25th percentile) | 0.5x | De-prioritized but not ignored |
Apply weight multiplier when counting pattern occurrences in Step 3 (Pattern Detection). A HIGH-weight user's feedback entry counts as 3 occurrences toward confidence thresholds.
When invoked without arguments, display canvas summary.
grimoires/observer/canvas/*.md
Extract from each canvas:
┌─────────────────────────────────────────────────────────────────┐
│ LABORATORY CANVASES │
├─────────────────────────────────────────────────────────────────┤
│ │
│ User Status Quotes Goals Journeys │
│ ───────────── ─────── ────── ───── ───────── │
│ papa-flavio active 3 2 deposit-flow │
│ tchallason active 5 3 rewards-display │
│ testuser active 1 1 - │
│ │
│ Total: 3 canvases, 9 quotes, 6 goals │
│ │
│ Pending Synthesis: 1 canvas (testuser) │
│ │
└─────────────────────────────────────────────────────────────────┘
Next Steps:
- Add more feedback: /observe @{user} "quote"
- Shape journeys: /shape --run
- View journey: /shape --journey {journey-id}
--run)Extract patterns from canvases to create journey definitions.
Read all grimoires/observer/canvas/*.md files.
Parse YAML frontmatter and markdown sections.
From each canvas, extract:
Before pattern detection, load domain vocabulary to prevent misinterpretation during synthesis:
grimoires/observer/glossary.yamlterm field)meaning field as the canonical interpretationnot field to explicitly avoid the common misinterpretation[glossary: {term}] where relevantIdentify common patterns across canvases:
Grouping Rules:
Confidence Thresholds: | Canvases | Confidence | Action | |----------|------------|--------| | 1 | LOW | Flag for manual review | | 2 | MEDIUM | Create draft journey | | 3+ | HIGH | Create journey, auto-validate |
For MEDIUM/HIGH confidence patterns, create journey files:
Journey Template:
---
type: journey
id: {journey-id}
title: {Human Readable Title}
source_canvases: [{usernames}]
created: {timestamp}
updated: {timestamp}
status: draft
confidence: medium | high
---
# {Journey Title}
## Summary
{1-2 sentence description synthesized from goals}
---
## User Types
- **Primary**: {most common type from source canvases}
- **Secondary**: [{other types}]
---
## Steps
### Step 1: {Step Name}
- **Trigger**: {what initiates this step}
- **Action**: {what user does}
- **Expected**: {what should happen}
- **Selector**: {suggested data-testid or selector}
- **Potential Errors**:
- {error state from canvas gaps}
### Step 2: {Step Name}
...
---
## Success Condition
{What constitutes successful completion of this journey}
---
## Known Gaps
| Gap | Type | Source Canvas | Resolution |
|-----|------|---------------|------------|
| {gap} | {Bug/Feature/Discoverability} | {canvas} | {status} |
---
## Source Quotes
> "{quote}" — @{user}
Add journey link to each source canvas frontmatter:
linked_journeys:
- {journey-id}
After creating or updating journey files and updating source canvas frontmatter, re-wire all affected canvases to reflect the new journey membership:
# Re-wire all canvases and journeys to reflect updated source_canvases
bash scripts/observer/wire-obsidian-links.sh --canvases-journeys
# Verify consistency
bash scripts/observer/wire-obsidian-links.sh --canvases-journeys --verify
This ensures newly created journeys and their source canvases have bidirectional wiki-links. The --canvases-journeys mode is idempotent — safe to re-run.
Update grimoires/observer/state.yaml:
active:
phase: synthesis
journeys:
{journey-id}:
status: draft
created: {timestamp}
source_canvases: [{users}]
queue:
pending_synthesis: [] # Clear processed
✓ Synthesis complete
Journeys Created:
- deposit-flow (HIGH confidence)
Sources: papa-flavio, tchallason
Steps: 4
Gaps: 2
- rewards-display (MEDIUM confidence)
Sources: tchallason
Steps: 3
Gaps: 1
Low Confidence (Manual Review):
- testuser canvas: 1 goal, no pattern match
Next Steps:
- View journey: /shape --journey deposit-flow
- Generate diagram: /diagram deposit-flow
- Add more feedback: /observe @testuser "..."
--journey {id})Display full journey details:
/shape --journey deposit-flow
Output:
┌─────────────────────────────────────────────────────────────────┐
│ JOURNEY: deposit-flow │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Status: draft │
│ Confidence: HIGH │
│ Sources: papa-flavio, tchallason │
│ │
│ Steps: │
│ 1. Open deposit modal (trigger: click deposit button) │
│ 2. Enter amount (action: input token amount) │
│ 3. Approve token (action: wallet approval) │
│ 4. Confirm deposit (action: execute deposit) │
│ │
│ Known Gaps: 2 │
│ - Approval stuck on some wallets (Bug) │
│ - No loading indicator during tx (Feature) │
│ │
└─────────────────────────────────────────────────────────────────┘
Actions:
- Generate diagram: /diagram deposit-flow
- Generate test: /validate deposit-flow
- Edit journey: Read grimoires/observer/journeys/deposit-flow.md
Journey IDs are generated from goal patterns:
Examples:
deposit-stake-flowrewards-displayburn-planningCompare goals using semantic patterns:
Match Criteria:
When multiple canvases have journey fragments:
Before creating journey:
| Error | Resolution | |-------|------------| | No canvases found | Prompt to create with /observe | | No patterns detected | List canvases, suggest manual journey | | Journey ID collision | Append numeric suffix | | Canvas parse error | Report, skip canvas |
/observe - Create canvases from quotes/diagram - Generate diagrams from journeys/validate - Generate tests from diagramsdata-ai
Cognition orchestrator — analyze canvases, distill fears via /distill subagent, run gap analysis, optional cross-user synthesis.
development
Golden path /speak — generate RLM-isolated follow-ups with chronicle temporal context injection.
testing
# /snapshot — MiDi Experience Record (MER) Capture Capture a point-in-time MER for a wallet. Produces a 4-layer snapshot: data state, visual screenshot, user perception, and decision context. ## Usage ``` /snapshot <wallet-or-alias> /snapshot xabbu --trigger feedback /snapshot xabbu --data-only /snapshot --cohort /snapshot --cohort --diff MER-2026-001 ``` ## Arguments | Argument | Description | Required | |----------|-------------|----------| | `wallet-or-alias` | Wallet address or alias fr
development
Golden path /shape — consolidate journey patterns across canvases and file gap issues.