@codyswann/lisa 2.61.0 → 2.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/agents/confluence-prd-intake.md +1 -1
  5. package/plugins/lisa/agents/github-agent.md +4 -5
  6. package/plugins/lisa/agents/github-build-intake.md +1 -1
  7. package/plugins/lisa/agents/github-prd-intake.md +1 -1
  8. package/plugins/lisa/agents/linear-prd-intake.md +1 -1
  9. package/plugins/lisa/agents/notion-prd-intake.md +1 -1
  10. package/plugins/lisa/commands/intake.md +1 -1
  11. package/plugins/lisa/commands/project-ideation.md +3 -3
  12. package/plugins/lisa/commands/repair-intake.md +6 -0
  13. package/plugins/lisa/commands/research.md +3 -3
  14. package/plugins/lisa/commands/setup-automations.md +6 -0
  15. package/plugins/lisa/commands/tear-down-automations.md +6 -0
  16. package/plugins/lisa/commands/verify-prd.md +2 -2
  17. package/plugins/lisa/rules/config-resolution.md +63 -4
  18. package/plugins/lisa/rules/intent-routing.md +4 -3
  19. package/plugins/lisa/rules/leaf-only-lifecycle.md +1 -1
  20. package/plugins/lisa/rules/prd-lifecycle-rollup.md +10 -2
  21. package/plugins/lisa/rules/repo-scope-split.md +18 -1
  22. package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +24 -14
  23. package/plugins/lisa/skills/confluence-prd-intake/agents/openai.yaml +2 -2
  24. package/plugins/lisa/skills/confluence-write-prd/SKILL.md +103 -0
  25. package/plugins/lisa/skills/confluence-write-prd/agents/openai.yaml +4 -0
  26. package/plugins/lisa/skills/github-build-intake/SKILL.md +32 -21
  27. package/plugins/lisa/skills/github-evidence/SKILL.md +3 -26
  28. package/plugins/lisa/skills/github-evidence/agents/openai.yaml +2 -2
  29. package/plugins/lisa/skills/github-journey/SKILL.md +2 -2
  30. package/plugins/lisa/skills/github-prd-intake/SKILL.md +25 -11
  31. package/plugins/lisa/skills/github-prd-intake/agents/openai.yaml +2 -2
  32. package/plugins/lisa/skills/github-sync/SKILL.md +5 -5
  33. package/plugins/lisa/skills/github-write-issue/SKILL.md +15 -6
  34. package/plugins/lisa/skills/github-write-prd/SKILL.md +100 -0
  35. package/plugins/lisa/skills/github-write-prd/agents/openai.yaml +4 -0
  36. package/plugins/lisa/skills/implement/SKILL.md +13 -6
  37. package/plugins/lisa/skills/intake/SKILL.md +13 -12
  38. package/plugins/lisa/skills/intake/agents/openai.yaml +2 -2
  39. package/plugins/lisa/skills/jira-build-intake/SKILL.md +24 -11
  40. package/plugins/lisa/skills/jira-write-ticket/SKILL.md +8 -0
  41. package/plugins/lisa/skills/linear-build-intake/SKILL.md +22 -9
  42. package/plugins/lisa/skills/linear-prd-intake/SKILL.md +23 -13
  43. package/plugins/lisa/skills/linear-prd-intake/agents/openai.yaml +2 -2
  44. package/plugins/lisa/skills/linear-write-issue/SKILL.md +10 -2
  45. package/plugins/lisa/skills/linear-write-prd/SKILL.md +90 -0
  46. package/plugins/lisa/skills/linear-write-prd/agents/openai.yaml +4 -0
  47. package/plugins/lisa/skills/notion-access/SKILL.md +2 -0
  48. package/plugins/lisa/skills/notion-prd-intake/SKILL.md +22 -12
  49. package/plugins/lisa/skills/notion-prd-intake/agents/openai.yaml +2 -2
  50. package/plugins/lisa/skills/notion-write-prd/SKILL.md +107 -0
  51. package/plugins/lisa/skills/notion-write-prd/agents/openai.yaml +4 -0
  52. package/plugins/lisa/skills/prd-source-write/SKILL.md +80 -0
  53. package/plugins/lisa/skills/prd-source-write/agents/openai.yaml +4 -0
  54. package/plugins/lisa/skills/project-ideation/SKILL.md +183 -80
  55. package/plugins/lisa/skills/repair-intake/SKILL.md +403 -0
  56. package/plugins/lisa/skills/repair-intake/agents/openai.yaml +4 -0
  57. package/plugins/lisa/skills/research/SKILL.md +19 -3
  58. package/plugins/lisa/skills/research/agents/openai.yaml +2 -2
  59. package/plugins/lisa/skills/setup-automations/SKILL.md +78 -0
  60. package/plugins/lisa/skills/setup-automations/agents/openai.yaml +4 -0
  61. package/plugins/lisa/skills/setup-github/SKILL.md +0 -1
  62. package/plugins/lisa/skills/tear-down-automations/SKILL.md +34 -0
  63. package/plugins/lisa/skills/tear-down-automations/agents/openai.yaml +4 -0
  64. package/plugins/lisa/skills/tracker-build-intake/SKILL.md +6 -2
  65. package/plugins/lisa/skills/tracker-build-intake/agents/openai.yaml +2 -2
  66. package/plugins/lisa/skills/tracker-evidence/SKILL.md +2 -2
  67. package/plugins/lisa/skills/tracker-sync/SKILL.md +1 -1
  68. package/plugins/lisa/skills/verify-prd/SKILL.md +41 -38
  69. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  71. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-expo/commands/exploratory-qa.md +3 -3
  74. package/plugins/lisa-expo/skills/exploratory-qa/SKILL.md +48 -18
  75. package/plugins/lisa-expo/skills/exploratory-qa/agents/openai.yaml +2 -2
  76. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  78. package/plugins/lisa-harper-fabric/commands/exploratory-qa.md +3 -3
  79. package/plugins/lisa-harper-fabric/skills/exploratory-qa/SKILL.md +48 -18
  80. package/plugins/lisa-harper-fabric/skills/exploratory-qa/agents/openai.yaml +2 -2
  81. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  83. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  85. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  87. package/plugins/lisa-rails/commands/exploratory-qa.md +3 -3
  88. package/plugins/lisa-rails/skills/exploratory-qa/SKILL.md +48 -18
  89. package/plugins/lisa-rails/skills/exploratory-qa/agents/openai.yaml +2 -2
  90. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  92. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-wiki/skills/lisa-wiki-ingest/SKILL.md +30 -1
  95. package/plugins/src/base/agents/confluence-prd-intake.md +1 -1
  96. package/plugins/src/base/agents/github-agent.md +4 -5
  97. package/plugins/src/base/agents/github-build-intake.md +1 -1
  98. package/plugins/src/base/agents/github-prd-intake.md +1 -1
  99. package/plugins/src/base/agents/linear-prd-intake.md +1 -1
  100. package/plugins/src/base/agents/notion-prd-intake.md +1 -1
  101. package/plugins/src/base/commands/intake.md +1 -1
  102. package/plugins/src/base/commands/project-ideation.md +3 -3
  103. package/plugins/src/base/commands/repair-intake.md +6 -0
  104. package/plugins/src/base/commands/research.md +3 -3
  105. package/plugins/src/base/commands/setup-automations.md +6 -0
  106. package/plugins/src/base/commands/tear-down-automations.md +6 -0
  107. package/plugins/src/base/commands/verify-prd.md +2 -2
  108. package/plugins/src/base/rules/config-resolution.md +63 -4
  109. package/plugins/src/base/rules/intent-routing.md +4 -3
  110. package/plugins/src/base/rules/leaf-only-lifecycle.md +1 -1
  111. package/plugins/src/base/rules/prd-lifecycle-rollup.md +10 -2
  112. package/plugins/src/base/rules/repo-scope-split.md +18 -1
  113. package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +24 -14
  114. package/plugins/src/base/skills/confluence-write-prd/SKILL.md +103 -0
  115. package/plugins/src/base/skills/github-build-intake/SKILL.md +32 -21
  116. package/plugins/src/base/skills/github-evidence/SKILL.md +3 -26
  117. package/plugins/src/base/skills/github-journey/SKILL.md +2 -2
  118. package/plugins/src/base/skills/github-prd-intake/SKILL.md +25 -11
  119. package/plugins/src/base/skills/github-sync/SKILL.md +5 -5
  120. package/plugins/src/base/skills/github-write-issue/SKILL.md +15 -6
  121. package/plugins/src/base/skills/github-write-prd/SKILL.md +100 -0
  122. package/plugins/src/base/skills/implement/SKILL.md +13 -6
  123. package/plugins/src/base/skills/intake/SKILL.md +13 -12
  124. package/plugins/src/base/skills/jira-build-intake/SKILL.md +24 -11
  125. package/plugins/src/base/skills/jira-write-ticket/SKILL.md +8 -0
  126. package/plugins/src/base/skills/linear-build-intake/SKILL.md +22 -9
  127. package/plugins/src/base/skills/linear-prd-intake/SKILL.md +23 -13
  128. package/plugins/src/base/skills/linear-write-issue/SKILL.md +10 -2
  129. package/plugins/src/base/skills/linear-write-prd/SKILL.md +90 -0
  130. package/plugins/src/base/skills/notion-access/SKILL.md +2 -0
  131. package/plugins/src/base/skills/notion-prd-intake/SKILL.md +22 -12
  132. package/plugins/src/base/skills/notion-write-prd/SKILL.md +107 -0
  133. package/plugins/src/base/skills/prd-source-write/SKILL.md +80 -0
  134. package/plugins/src/base/skills/project-ideation/SKILL.md +183 -80
  135. package/plugins/src/base/skills/repair-intake/SKILL.md +403 -0
  136. package/plugins/src/base/skills/research/SKILL.md +19 -3
  137. package/plugins/src/base/skills/setup-automations/SKILL.md +78 -0
  138. package/plugins/src/base/skills/setup-github/SKILL.md +0 -1
  139. package/plugins/src/base/skills/tear-down-automations/SKILL.md +34 -0
  140. package/plugins/src/base/skills/tracker-build-intake/SKILL.md +6 -2
  141. package/plugins/src/base/skills/tracker-evidence/SKILL.md +2 -2
  142. package/plugins/src/base/skills/tracker-sync/SKILL.md +1 -1
  143. package/plugins/src/base/skills/verify-prd/SKILL.md +41 -38
  144. package/plugins/src/expo/commands/exploratory-qa.md +3 -3
  145. package/plugins/src/expo/skills/exploratory-qa/SKILL.md +48 -18
  146. package/plugins/src/harper-fabric/commands/exploratory-qa.md +3 -3
  147. package/plugins/src/harper-fabric/skills/exploratory-qa/SKILL.md +48 -18
  148. package/plugins/src/rails/commands/exploratory-qa.md +3 -3
  149. package/plugins/src/rails/skills/exploratory-qa/SKILL.md +48 -18
  150. package/plugins/src/wiki/skills/lisa-wiki-ingest/SKILL.md +30 -1
@@ -1,131 +1,234 @@
1
1
  ---
2
2
  name: project-ideation
3
- description: "Generate practical, verifiable product or workflow ideas for the current host project. Inspects the host project (code, docs, scripts, data sources, current surfaces), optionally compares against external public products, and returns a prioritized idea report. Every build-ready idea must pass a practicality gate (an obtainable data/source path the project can plausibly implement) and an empirical verification gate (a user-observable outcome the agent can verify itself). Ideas that fail either gate are demoted to Discovery Spikes or Rejected / Not Practical Yet. Invoke for prompts like 'generate feature ideas for this project', 'looking at <external product>, what should we add here?', 'suggest practical improvements we can verify ourselves', or 'what should this app do next given the data we can get?'. Vendor- and stack-agnostic: works for web apps, APIs, CLIs, wiki systems, data pipelines, and internal tools. Does not create tickets or mutate the project — it produces a decision-ready report the user can later hand to a Research, Plan, or Implement flow."
3
+ description: "Generate practical, verifiable product ideas for the current host project FROM EVIDENCE-DERIVED PERSONAS, then turn the selected build-ready ideas into real PRDs via lisa:research. First derives the personas the project actually serves by mining its docs, code, data model, and releases (never invented each persona cites its evidence), then ideates per persona. Every build-ready idea must pass a practicality gate (an obtainable data/source path) and an empirical verification gate (a user-observable outcome the agent can verify). Selected ideas are handed to lisa:research, which creates each PRD in the configured source (Notion / Confluence / GitHub / Linear) in the draft state by default, or prd-ready (auto-picked-up by lisa:intake) when prd_ready=true. Defaults to creating one PRD (the top-ranked idea); max_prds widens the batch. Invoke for 'generate feature ideas for this project', 'what should we build next for <persona>?', 'looking at <external product>, what should we add here?'. Vendor- and stack-agnostic."
4
4
  allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep", "WebFetch", "WebSearch"]
5
5
  ---
6
6
 
7
7
  # Project Ideation
8
8
 
9
- Produce a decision-ready idea report for the host project described in `$ARGUMENTS` (or the current working directory if no target is given). The report separates ideas that are **build-ready now** from ideas that need a **discovery spike** and ideas that are **rejected / not practical yet**.
9
+ Generate persona-grounded, verifiable ideas for the host project in `$ARGUMENTS` (or the current
10
+ working directory), then create PRDs for the selected build-ready ideas via `lisa:research`.
10
11
 
11
- The value of this skill is **filtering**, not brainstorming volume. An attractive idea you cannot ground in obtainable data and cannot verify yourself is not a recommendation — it is noise. Demote it honestly.
12
+ The value of this skill is **grounding + filtering**, not brainstorm volume. Ideas come from
13
+ personas the project demonstrably serves, and an idea you cannot ground in obtainable data and
14
+ cannot verify yourself is noise — demote it honestly.
12
15
 
13
- ## When to use
16
+ ## Parameters
17
+
18
+ - **`target`** (first positional, optional) — a target project path, or an external product/site to
19
+ draw inspiration from. Defaults to the current working directory.
20
+ - **`prd_ready=true|false`** (default **false**) — the PRD-lifecycle state for the PRDs this run
21
+ creates. `false` → created in the source's **draft** state for human review. `true` → created
22
+ **prd-ready** so the PRD side of `lisa:intake` auto-claims them. Passed straight through to
23
+ `lisa:research` (which maps it to `lisa:prd-source-write`'s `initial_role`).
24
+ - **`max_prds=<n>|all`** (default **1**) — how many build-ready ideas become PRDs this run. Default
25
+ creates **one** PRD (the single top-ranked idea), because `lisa:research` is a heavy full flow.
26
+ `max_prds=3` creates the top three; `max_prds=all` creates one per build-ready idea. Discovery
27
+ Spikes and Rejected ideas are never turned into PRDs regardless of `max_prds`.
14
28
 
15
- Trigger this skill on prompts such as:
29
+ ## When to use
16
30
 
17
- - "generate feature ideas for this project"
31
+ - "generate feature ideas for this project" / "what should this app do next?"
32
+ - "what should we build next for <persona / user type>?"
18
33
  - "looking at <external product / website>, what should we add here?"
19
34
  - "suggest practical improvements we can verify ourselves"
20
- - "what should this app do next given the data we can get?"
21
- - "what high-value features could we add to <repo>?"
22
35
 
23
- Do **not** use this skill to create tickets, write a PRD, or change code. It stops at a report. The user can then ask Lisa to turn one or more ideas into a PRD (`/lisa:research`), a plan (`/lisa:plan`), or an implementation (`/lisa:implement`).
36
+ This skill **does** create PRDs (via `lisa:research`) for the selected ideas. It does **not** create
37
+ tracker tickets (that is `lisa:plan`) and does **not** change code (that is `lisa:implement`).
24
38
 
25
39
  ## Two gates every build-ready idea must pass
26
40
 
27
- An idea may only appear under **Practical Ideas** if it passes BOTH gates. Otherwise demote it.
41
+ An idea may only become a **Practical Idea** (and thus a PRD candidate) if it passes BOTH gates.
42
+ Otherwise demote it.
28
43
 
29
- 1. **Practicality gate.** The project can plausibly implement the idea from sources that are actually available: existing code, an existing data model, a route/command/UI surface, a public or already-integrated API, a scrapeable public page, an existing user input, a local database, or documented integrations. You must be able to name the specific source and how the data is obtained. "We could probably get the data somehow" fails the gate.
30
- 2. **Empirical verification gate.** You can personally confirm the resulting behavior by using the software or workflow — running the CLI, hitting the API, loading the page, querying the database, or inspecting a generated artifact — and capture a concrete evidence artifact. Saying "tests could be written later" does **not** satisfy this gate. Quality gates (tests, lint, typecheck, build) are prerequisites, never proof that an idea works.
44
+ 1. **Practicality gate.** The project can plausibly implement the idea from sources that actually
45
+ exist: existing code, a data model, a route/command/UI surface, a public or integrated API, a
46
+ scrapeable public page, an existing user input, a local database, or documented integrations. Name
47
+ the specific source and how the data is obtained. "We could probably get the data somehow" fails.
48
+ 2. **Empirical verification gate.** You can personally confirm the resulting behavior by using the
49
+ software (running the CLI, hitting the API, loading the page, querying the DB, inspecting an
50
+ artifact) and capture a concrete evidence artifact. "Tests could be written later" does NOT
51
+ satisfy this gate — quality gates are prerequisites, never proof an idea works.
31
52
 
32
- If an idea fails the practicality gate → it goes under **Rejected / Not Practical Yet** (or **Discovery Spikes** if a bounded probe could make it practical), with the missing data/source/access named explicitly.
33
-
34
- If an idea fails only the empirical verification gate → it goes under **Discovery Spikes** (define the missing proof) or stays as a strategic note, never as a build-ready recommendation.
53
+ Failing the practicality gate → **Rejected / Not Practical Yet** (or **Discovery Spike** if a bounded
54
+ probe could make it practical), naming the missing data/source/access. Failing only the verification
55
+ gate → **Discovery Spike** (define the missing proof), never a build-ready recommendation.
35
56
 
36
57
  ## Step 1 — Establish host-project context (always first)
37
58
 
38
59
  Never propose ideas before you understand what exists. Inspect the host project and record:
39
60
 
40
- - **Project type and package manager** — read the manifests (`package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `Gemfile`, etc.) and any `.lisa.config.json`.
41
- - **Docs and specs** — `README`, `docs/`, `wiki/`, architecture notes, ADRs.
42
- - **Current product surfaces or commands** — routes, screens, CLI subcommands, API endpoints, scheduled jobs, generated artifacts.
43
- - **Data model and existing user inputs** — schemas, migrations, forms, config the user already supplies.
44
- - **Available data sources and ingestion/scraping paths** — integrated APIs, public datasets, scrapeable public pages, local databases, event streams.
45
- - **Existing verification tooling and empirical paths** — how a human currently observes that the software works (a local dev server, a CLI you can run, a seedable DB, a dry-run mode).
61
+ - **Project type and package manager** — manifests (`package.json`, `pyproject.toml`, `go.mod`,
62
+ `Cargo.toml`, `Gemfile`, …) and any `.lisa.config.json`.
63
+ - **Docs and specs** — `README`, `docs/`, `wiki/`, architecture notes, ADRs, marketing/landing copy.
64
+ - **Current product surfaces or commands** — routes, screens, CLI subcommands, API endpoints,
65
+ scheduled jobs, generated artifacts.
66
+ - **Data model and existing user inputs** — schemas, migrations, forms, config the user supplies.
67
+ - **Available data sources and ingestion/scraping paths** — integrated APIs, public datasets,
68
+ scrapeable pages, local databases, event streams.
69
+ - **Existing verification tooling** — how a human currently observes the software works.
70
+
71
+ Use Lisa's existing methodology rather than inventing a parallel flow. Route each evidence source
72
+ through the matching established practice before any idea is promoted to **Practical Ideas**:
73
+
74
+ - **Host-code inspection** uses `/lisa:codebase-research` concepts: trace data flow from entry point
75
+ to output, identify modification points, map dependencies, and find reusable code or patterns.
76
+ - **Public, no-login comparison** uses web/browser research when those tools are available: inspect
77
+ the public surface, preserve source URLs, and separate observed behavior from inference.
78
+ - **UI-facing recommendations** use `/lisa:product-walkthrough` methodology first: inspect the
79
+ current product surface, note existing-component reuse candidates, capture coverage smells or
80
+ behavioral surprises, and only then list a UI idea as build-ready.
81
+
82
+ ## Step 2 — Derive the personas (evidence-gated, never invented)
83
+
84
+ Ideation is **persona-driven**, and the personas must be gleaned from the project itself — not
85
+ assumed. Mine the Step 1 evidence for who the project actually serves:
86
+
87
+ - **Docs / README / release notes / CHANGELOG** — stated audiences, "for <role>" framing, who each
88
+ shipped feature was for.
89
+ - **Code** — auth roles / RBAC / permission checks, account-type or user-type enums, route guards,
90
+ feature flags scoped to a cohort, role-specific UI branches.
91
+ - **Data model** — user / role / tenant / org tables, profile fields, subscription tiers.
92
+ - **Tests & product walkthrough** — the real user journeys exercised.
93
+ - **External inspiration** (Step 3, if used) — comparable products' user segments, as inspiration
94
+ only.
95
+
96
+ Anti-fabrication rule (mechanical): **no evidence citation → no persona.** Generic roles
97
+ ("admin", "analyst", "end user", "power user") are **banned unless the project has specific evidence
98
+ for them**. Each persona requires at least **two grounded signals** from different source classes
99
+ where available; if only one strong signal exists, emit a single **low-confidence "Primary
100
+ documented user"** persona named as such — never fabricate a full set from thin evidence.
101
+
102
+ Cap the set at **3–6 personas** (merge adjacent personas by goal/workflow; more than six is taxonomy
103
+ noise). Each persona records:
104
+
105
+ - `name` — concrete and project-specific.
106
+ - `goals` — what this persona is trying to accomplish.
107
+ - `pains` — current friction for this persona, grounded in observed behavior/gaps.
108
+ - `evidence` — the specific files / doc sections / tables / releases that justify the persona.
109
+ - `confidence` — high | medium | low, with the reason.
110
+
111
+ Always emit a **Personas Derived From Evidence** section, even when no PRDs are created. Spikes and
112
+ rejected ideas are still tagged with the persona they would serve (or `cross-persona`).
113
+
114
+ ## Step 3 — Optional external / public-source inspection
115
+
116
+ Only when the user references an external product, website, public dataset, or competitor:
117
+
118
+ - Inspect **public, no-login** surfaces only. Preserve every **source URL** so informed ideas cite
119
+ it. The external source is **inspiration, not a domain you bake in** — keep the workflow reusable.
120
+ - If the runtime has no browser/web capability, mark that source **unavailable** and proceed with
121
+ host-project-only ideas (document the fallback rather than fabricating findings).
122
+
123
+ ## Step 4 — Ideate per persona, then filter through the gates
124
+
125
+ For each derived persona, brainstorm ideas that serve that persona's goals/pains, **tag each idea
126
+ with the persona(s) it serves**, then run every idea through BOTH gates. For each surviving idea,
127
+ build a **feasibility card**:
128
+
129
+ - **Persona(s) served** — which derived persona(s), and why this matters to them.
130
+ - **Existing fit** — the current route / API / CLI / model / doc / surface it builds on (this is also
131
+ the idea's stable "existing-fit anchor" used in the dedupe key).
132
+ - **Data/source required** + **how it is obtained** — the concrete accessible path.
133
+ - **Known source limitations** — rate limits, robots/ToS, staleness, missing fields.
134
+ - **Smallest practical slice** — the minimal useful version.
135
+ - **Empirical verification steps** — what you (the agent) will do against the running software.
136
+ - **Evidence artifact** — the screenshot, curl/CLI output, DB row, or generated file the verifier
137
+ captures.
138
+ - **Confidence** — high | medium | low, with the reason.
46
139
 
47
- Use Lisa's existing methodology rather than inventing a parallel flow. Route each evidence source through the matching established practice before any idea is promoted to **Practical Ideas**:
140
+ ## Step 5 Rank and select the PRD creation set
48
141
 
49
- - **Host-code inspection** uses `/lisa:codebase-research` concepts: trace data flow from entry point to output, identify modification points, map dependencies, and find reusable code or patterns.
50
- - **Public, no-login comparison** uses web/browser research when those tools are available: inspect the public surface, preserve source URLs, and separate observed behavior from inference.
51
- - **UI-facing recommendations** use `/lisa:product-walkthrough` methodology first: inspect the current product surface, note existing-component reuse candidates, capture coverage smells or behavioral surprises, and only then list a UI idea as build-ready.
142
+ Rank Practical Ideas by **persona value, feasibility, verification clarity, and project fit**. Then
143
+ select the creation set by `max_prds` (default **1** the single top-ranked idea; `<n>` top n;
144
+ `all` every Practical Idea). Spikes and Rejected ideas are reported but never selected.
52
145
 
53
- ## Step 2Optional external / public-source inspection
146
+ ## Step 6Create a PRD per selected idea (via lisa:research)
54
147
 
55
- Only when the user references an external product, website, public dataset, competitor, or example:
148
+ For each idea in the creation set, invoke `/lisa:research` with:
56
149
 
57
- - Inspect **public, no-login** surfaces only. Do not assume sign-in, credentials, or paid access.
58
- - Preserve every **source URL** you used so each informed idea can cite it.
59
- - If the runtime has no browser or web capability, mark that research source as **unavailable** and proceed with host-project-only ideas (document the fallback rather than fabricating findings).
150
+ - the feasibility card and persona evidence as the problem statement (so the PRD inherits the
151
+ grounding and the empirical verification plan),
152
+ - `prd_ready` (this run's flag `lisa:research` maps it to draft vs prd-ready),
153
+ - a stable **dedupe marker** (see below) so a re-run references the existing PRD instead of creating
154
+ a duplicate.
60
155
 
61
- The external source is **inspiration, not a domain you bake in**. Keep the workflow reusable across any Lisa-managed repository.
156
+ `lisa:research` synthesizes the PRD and creates it in the configured source via
157
+ `lisa:prd-source-write`. `project-ideation` never writes to the source directly — it delegates, so
158
+ the PRD source stays switchable per project. Capture each returned PRD ref / URL / role / outcome.
62
159
 
63
- ## Step 3 — Generate ideas, then filter through the gates
160
+ ### Dedupe marker (stable, never title-based)
64
161
 
65
- Brainstorm broadly, then run every idea through both gates from the top of this skill. For each surviving idea, build a **feasibility card** containing at least:
162
+ Each created PRD carries the marker `[lisa-project-ideation] idea=<stable-key>`. Compute
163
+ `<stable-key>` deterministically from: repo identity (configured repo or git remote + repo-root
164
+ basename) + a normalized slug of the idea name + the normalized persona key(s) + the existing-fit
165
+ anchor. **Do not** include rank, date, confidence, or the generated PRD title (they change across
166
+ runs). `lisa:prd-source-write` searches the source for an open PRD carrying this marker before
167
+ creating — matching by marker, never by title — so re-running ideation updates/references the
168
+ existing PRD rather than duplicating it.
66
169
 
67
- - **User/persona value**why the host project's user would care.
68
- - **Existing fit** — the current route / API / CLI / model / doc / surface it builds on.
69
- - **Data/source required** — the specific data the idea consumes.
70
- - **How the data can be obtained or scraped** — the concrete accessible path (endpoint, query, public page, existing input).
71
- - **Known source limitations or terms constraints** — rate limits, robots/ToS, staleness, missing fields.
72
- - **Smallest practical implementation slice** — the minimal useful version.
73
- - **Empirical verification steps** — what you (the agent) will do against the running app / API / CLI / DB / artifact to confirm it works.
74
- - **Evidence artifact** — the screenshot, curl output, CLI output, DB row, or generated file the verifier captures.
75
- - **Confidence** — high | medium | low, with the reason.
170
+ ## Step 7Output (no report file)
76
171
 
77
- ## Step 4 Rank and assemble the report
172
+ Emit two distinct in-session sections (do not write a report file):
78
173
 
79
- Rank build-ready ideas by **user value, feasibility, verification clarity, and project fit**. Emit the report in this shape:
174
+ 1. **Idea report** (the audit trail):
175
+ ```markdown
176
+ ## Personas Derived From Evidence
177
+ - <name> — goals; pains; evidence (files/docs/tables/releases); confidence
80
178
 
81
- ```markdown
82
- ## What Already Exists
83
- - <current surfaces, data, commands, or workflows discovered — so duplicates are not re-proposed>
179
+ ## What Already Exists
180
+ - <current surfaces, data, commands, workflows — so duplicates aren't re-proposed>
84
181
 
85
- ## Practical Ideas
86
- ### 1. <Idea name>
87
- - User value: <why the host project's user would care>
88
- - Existing fit: <current route/API/CLI/model/doc/surface it builds on>
89
- - Data/source path: <specific accessible source or scrape/API path>
90
- - Practical slice: <smallest useful version>
91
- - Empirical verification: <steps the agent can perform against the running software>
92
- - Evidence: <screenshot, curl output, CLI output, DB row, generated file, etc.>
93
- - Confidence: high|medium|low with reason
182
+ ## Practical Ideas
183
+ ### 1. <Idea name> (persona: <persona(s)>)
184
+ - Persona value · Existing fit · Data/source path · Practical slice · Empirical verification ·
185
+ Evidence · Confidence
94
186
 
95
- ## Discovery Spikes
96
- - <ideas that need proof of data, access, or verification before they can be build-readyname the missing proof>
187
+ ## Discovery Spikes
188
+ - <ideas needing proof of data/access/verification name the missing prooftagged by persona>
97
189
 
98
- ## Rejected / Not Practical Yet
99
- - <attractive ideas rejected because data, access, legality, or verification is not available — name what is missing>
100
- ```
190
+ ## Rejected / Not Practical Yet
191
+ - <attractive ideas rejected for missing data/access/legality/verification — name what's missing>
192
+ ```
193
+ 2. **PRDs Created** (the creation summary): for each selected idea — the created/reused PRD ref +
194
+ URL, its lifecycle role (`draft` or `ready`), its dedupe marker, and `created | reused`. List the
195
+ Practical Ideas that were **not** created this run and why (e.g. "below the `max_prds=1` cut").
101
196
 
102
- Always include the **What Already Exists** section so the user can tell genuinely new ideas from duplicates, and so the report records existing capabilities. Always include both the **Discovery Spikes** and **Rejected / Not Practical Yet** sections (even if empty) so the user can see what was deliberately filtered out and why.
197
+ Always include the **Personas**, **What Already Exists**, **Discovery Spikes**, and **Rejected**
198
+ sections (even if empty) so the user sees what was considered and filtered out.
103
199
 
104
200
  ## Out of scope (hard rules)
105
201
 
106
- - **No sign-in-only ideas** unless the host project already supports sign-in *and* credentials are available.
107
- - **No private-data assumptions** — do not premise an idea on data the project cannot legitimately obtain.
108
- - **No manual-data-only requirements** unless the user explicitly accepts manual curation.
109
- - **No paid-API or non-scrapeable-source ideas** in the build-ready list — demote them with the blocker named.
110
- - **Tests, lint, typecheck, and build are not the empirical verification plan.** They are prerequisites; the verification plan must observe user-facing behavior.
111
- - **Do not auto-create tracker tickets or mutate the host project.** Produce the report only; planning and implementation are separate, user-invoked flows.
112
- - **Do not add a new verification or browser-automation framework** when the host project already has one reuse it.
113
- - **Do not overfit to a source example.** Keep the workflow project-agnostic and reusable.
202
+ - **No fabricated personas.** No evidence citation no persona; generic roles banned without
203
+ evidence (Step 2).
204
+ - **No sign-in-only ideas** unless the host project already supports sign-in *and* credentials are
205
+ available. **No private-data assumptions.** **No manual-data-only** requirements unless the user
206
+ accepts manual curation. **No paid-API / non-scrapeable-source ideas** in the build-ready list
207
+ demote with the blocker named.
208
+ - **Tests, lint, typecheck, and build are not the empirical verification plan**they are
209
+ prerequisites; verification must observe user-facing behavior.
210
+ - **Do not create tracker tickets or mutate the host project's code.** PRD creation (via
211
+ `lisa:research`) is the only write this skill performs; ticket planning (`lisa:plan`) and
212
+ implementation (`lisa:implement`) are separate, user-invoked flows.
213
+ - **Do not write PRDs to the source directly** — always go through `lisa:research` →
214
+ `lisa:prd-source-write` so the source stays switchable.
215
+ - **Do not add a new verification/browser-automation framework** when one already exists — reuse it.
216
+ - **Do not overfit to a source example.** Keep the workflow project-agnostic.
114
217
 
115
218
  ## Handing off
116
219
 
117
- When the user wants to act on an idea, preserve its feasibility and verification card as the source artifact so downstream flows inherit the evidence:
220
+ The created PRDs flow straight into the lifecycle:
118
221
 
119
- - Turn an idea into a PRD `/lisa:research`
120
- - Turn a PRD into tickets → `/lisa:plan`
121
- - Build a ticket end-to-end → `/lisa:implement`
122
- - Lock in the verification so it never regresses → `/lisa:codify-verification`
222
+ - A `draft` PRD a human reviews it, then promotes it to `ready` (or re-run with `prd_ready=true`).
223
+ - A `prd-ready` PRD `/lisa:intake` (PRD side) auto-claims it → `/lisa:plan` decomposes it →
224
+ `/lisa:implement` builds each item → `/lisa:codify-verification` locks in the verification.
123
225
 
124
226
  ## Example outputs
125
227
 
126
- Use the markdown examples in `examples/` as shape references when composing reports:
228
+ Use the markdown examples in `examples/` as shape references for the idea report:
127
229
 
128
- - `host-project-only.md` shows ideas grounded only in the current repository.
129
- - `public-external-inspiration.md` shows how public, no-login external sources can inspire ideas without becoming hidden requirements.
130
- - `unavailable-data-rejection.md` shows how to name missing private, paid, or unavailable data sources when demoting ideas.
131
- - `evidence-card-format.md` shows the required evidence fields every Practical Idea card must carry.
230
+ - `host-project-only.md` ideas grounded only in the current repository.
231
+ - `public-external-inspiration.md` public, no-login external sources as inspiration, not hidden
232
+ requirements.
233
+ - `unavailable-data-rejection.md` naming missing private/paid/unavailable sources when demoting.
234
+ - `evidence-card-format.md` — the required evidence fields every Practical Idea card must carry.