一键导入
synthetic-walkthrough-spec
Generate per-persona walkthrough YAML specs from the narrative plan and persona catalog. Each spec drives a canopy:walkthrough run.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate per-persona walkthrough YAML specs from the narrative plan and persona catalog. Each spec drives a canopy:walkthrough run.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | synthetic-walkthrough-spec |
| description | Generate per-persona walkthrough YAML specs from the narrative plan and persona catalog. Each spec drives a canopy:walkthrough run. |
| disable-model-invocation | true |
Stage 2 of ACE Phase 7 (Plan B). Reads the narrative plan and the persona
catalog (canned + opp-specific overlays) and emits one walkthrough spec
YAML per persona. Each spec is the input to a canopy:walkthrough run via
the synthetic-walkthrough-run skill.
| Source | Artifact | Used for |
|---|---|---|
| Phase 7 | 7-synthetic/synthetic-narrative-plan.md | the data story — informs scene narration |
| Phase 7 | 7-synthetic/synthetic-narrative-plan.yaml | manifest — anomaly weeks, FLW names, KPI thresholds for "wow moment" assertions |
| Phase 7 | 7-synthetic/synthetic-data-generate.md | labs URL, fixture folder ID, record counts |
| Phase 7 (optional) | 7-synthetic/synthetic-workflow-seed.md | workflow IDs + saved-run render deep-links (/run/?run_id=<run_id>&opportunity_id=) — use these verbatim for any workflow-dashboard scene (see authoring rules) |
| Plugin | personas/<persona>.md | canned persona catalog (currently prospective-llo.md, funder.md) |
| Drive (optional) | ACE/<opp>/personas/*.md | per-opp persona overlays — override or supplement the canned set |
| Drive | ACE/<opp>/opp.yaml | display_name, slug, synthetic.labs_opp_id, synthetic.current_folder_id |
7-synthetic/synthetic-walkthrough-spec_<persona>.yaml per personarun_state.yaml.phases.synthetic-data-and-workflows.synthetic-walkthrough-spec.steps[<persona>]: doneDiscover personas.
prospective-llo and funder from the plugin's
personas/ directory (canned catalog).ACE/<opp>/personas/ (Drive). Any *.md file
there is treated as an opp-specific persona — if its name
collides with a canned one, the opp-specific overlay wins
entirely (no merge — the opp file is the authoritative version).--personas <comma-list>
(e.g., --personas funder to skip prospective-llo this run).Read inputs. Load the narrative plan, manifest, data-generate
summary, opp.yaml, and each persona file via drive_read_file /
the local personas/ files (filesystem read for canned).
If synthetic-narrative-plan.yaml is missing, halt with: "Run
/ace:step synthetic-narrative-plan --opp <slug> first — this skill
composes specs from the narrative plan."
If synthetic-data-generate.md is missing, halt with: "Run
/ace:step synthetic-data-generate --opp <slug> first — specs need
the labs URL and fixture folder."
Derive scene plan per persona.
For each persona, work through 5–8 scenes that map their priorities to actual labs URLs the synthetic data populates. The shape varies by persona; common scene types (atomic-visit archetype):
synthetic-workflow-seed lights this up.Assemble the YAML spec. Use the canopy:walkthrough schema —
see ~/.claude/plugins/marketplaces/canopy/plugins/canopy/skills/walkthrough/SKILL.md
for the canonical contract. Shape:
name: "<opp-slug>-<persona>-walkthrough"
narrative: "<one-line thesis tuned to the persona>"
base_url: "${LABS_BASE_URL}" # default https://labs.connect.dimagi.com
auth:
type: command
check: "test -f ~/.ace/labs-session.json && bash ~/.claude/plugins/cache/ace/ace/$(cat ~/.claude/plugins/marketplaces/ace/VERSION)/bin/ace-labs-walkthrough-login"
login: "bash ~/.claude/plugins/cache/ace/ace/$(cat ~/.claude/plugins/marketplaces/ace/VERSION)/bin/ace-labs-walkthrough-login"
# NOTE: labs has no /auth/e2e-login/ shared-secret bypass (only ace-web does).
# The login script drives the full Connect-OAuth + labs-OAuth click-through
# via Playwright, reusing mcp/connect/auth/hq-oauth-login.ts. After login,
# cookies are imported into the gstack browse profile so canopy:walkthrough
# picks them up. State persisted to ~/.ace/labs-session.json.
personas:
<persona-key>:
name: "<persona display name>"
role: "<persona role line>"
color: "<hex>" # prospective-llo: #2563eb; funder: #16a34a
intro: "<one-sentence intro from the persona file>"
scenes:
- persona: <persona-key>
title: "<scene title>"
show: "<one-line description of what to capture; URL hint OK>"
impressive_because: "<the wow moment — name a specific number/name from the manifest>"
ai_quality: "<assertion the canopy walkthrough's AI judge can check, e.g.,
'KPI panel must show ≥3 named FLWs with archetype labels visible'>"
Critical authoring rules:
impressive_because must reference a concrete element from
the manifest (a named FLW, a specific anomaly, a KPI threshold).
Generic "looks good" entries get rejected by the eval (Stage 4).ai_quality must be falsifiable — name what an AI judge
should look for, not just "the page should be nice." Use language
the canopy walkthrough's LLM-as-Judge can apply.synthetic-data-generate is wasted./labs/workflow/<id>/run/?run_id=<run_id>&opportunity_id=<opp>
links recorded in synthetic-workflow-seed.md (Render deep-links).
The bare /labs/workflow/<id>/?opportunity_id=<opp> renders the run
picker, not the polished per-FLW dashboard — a scene pointed there
captures the picker and the AI judge sees no hero/FLW content. If
synthetic-workflow-seed.md is absent or recorded no saved run, omit
the workflow-dashboard scenes rather than linking the picker. (Recipe
verified live; jjackson/ace#769.)Pick the labs base URL. Default to https://labs.connect.dimagi.com.
Read LABS_BASE_URL from ${CLAUDE_PLUGIN_DATA}/.env if set; that
override is mainly for staging environments.
Validate the spec. Before writing each YAML:
name, narrative, base_url, auth,
personas, scenes (with at least 4 scenes).scenes[].persona matches a key in personas.base_url (no absolute URLs to
other domains).If validation fails, halt and surface the failure to the operator. Don't write a malformed spec.
Write each spec to
7-synthetic/synthetic-walkthrough-spec_<persona>.yaml via
drive_create_file (find-or-update; re-runs overwrite).
Update run_state.yaml via the read-merge-write pattern:
phases:
synthetic-data-and-workflows:
steps:
synthetic-walkthrough-spec:
status: done
personas:
prospective-llo:
status: done
spec_artifact: <Drive ID>
scene_count: <int>
funder:
status: done
spec_artifact: <Drive ID>
scene_count: <int>
mcp__plugin_ace_ace-gdrive__drive_read_filemcp__plugin_ace_ace-gdrive__drive_list_folder (discover opp-specific personas)mcp__plugin_ace_ace-gdrive__drive_create_file (find-or-update)mcp__plugin_ace_ace-gdrive__drive_update_file (run_state read-merge-write)--personas <comma-list>: only emit specs for the listed personas
(e.g., --personas funder). Useful when iterating on one deck.--dry-run writes both spec files as normal (no external side effects in
this skill); state tracks as dry-run-success.
| Failure | Detection | Recovery |
|---|---|---|
synthetic-narrative-plan.yaml missing | step 2 halt | Run synthetic-narrative-plan first. |
synthetic-data-generate.md missing | step 2 halt | Run synthetic-data-generate first. |
| Persona file empty / malformed | step 2 warn | Skip that persona with a warning; emit specs for remaining personas. |
| Spec validation fails (step 6) | step 6 halt | Fix the underlying input (likely a malformed manifest or a missing labs URL); re-run. |
synthetic-narrative-plan — produces the narrative + manifest this
skill consumes.synthetic-walkthrough-run — Stage 2 sibling that consumes each
spec written here and dispatches canopy:walkthrough.synthetic-summary — links the persona slideshows produced by
synthetic-walkthrough-run.| Date | Change | Author |
|---|---|---|
| 2026-05-06 | Initial Stage 2 skill — per-persona spec authoring with canned + opp-overlay persona catalog | ACE team (Plan B Stage 2) |
| 2026-06-13 | Workflow-dashboard scenes (LLO Weekly Review / Program Admin Audit) must target the saved-run render deep-link (/labs/workflow/<id>/run/?run_id=<run_id>&opportunity_id=<opp>) from synthetic-workflow-seed.md, not the bare workflow URL (which renders the run picker). Omit those scenes when no run was saved. Added synthetic-workflow-seed.md to Inputs. See docs/learnings/2026-06-13-labs-workflow-run-deeplink.md (jjackson/ace#769). | ACE team |
Produce a domain-expert-facing before/after (pre-post) Google Doc for a DDD narrative iteration, and read the expert's edits back. Pull the verbatim CURRENT narration from canopy-web, apply reviewer feedback into a PROPOSED next version, publish a scannable side-by-side doc a non-engineer can review, then read their suggestion-mode edits via the structured Doc. Use when iterating a Connect DDD narrative on expert feedback (e.g. RF Surveys / Sophie), when asked to "make a before/after of the narration", "iterate the narrative on <expert>'s feedback", or "let <expert> sign off on the language".
Apply the two HQ-layer standing-instruction settings Nova can't set at build time — camera-only photo capture (appearance="acquire" on Deliver image uploads) and grid menu display on every module — to the deployed draft apps, then resolve the matching Phase-3 residuals. Runs between app-deploy and app-release.
Build the CommCare Learn (training) app from the PDD via Nova's /nova:autobuild. Captures nova_app_id and writes a structure summary.
Render a training deck spec.yaml into a Google Slides deck via the 14-stencil ACE template. Produces a presentable Slides URL.
Phase 3 § Step 2.8 — structural + install-time QA on the released Learn + Deliver CCZs. Downloads each CCZ via commcare_download_ccz, parses the zip + suite.xml + form XMLs, verifies form counts + Connect-marker presence match the Nova blueprint, then runs commcare-cli `validate` + `play` as install-time runtime gates. AVD-free, Connect-free — purely CCHQ-side. Halts loud on mismatch.
Run app smoke recipes against a local AVD and capture per-step screenshots for the training deck. Per-opp content only.