Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/suggest-new-features.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@gemstack/the-framework": patch
---

Add a "Suggest new features" preset.

The Agentic-PM presets covered proposing work items you describe (Suggest new tickets), researching the outside market (Market research), and choosing among tickets that already exist (Suggest tickets to work on) — but not proposing net-new features from the product itself. This fills that corner: it studies what the product does today and proposes features it should have next, writing each as a ticket under `tickets/` for the normal triage pipeline to pick up.

Autonomous rather than gated, like the other suggest-class presets: a proposal is a reviewable ticket, so the human triages later instead of approving mid-run, which also keeps it usable on a schedule. Paramless — it scopes itself to the whole product, so there is no blank to fill.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
1. Study what this product does today: skim the README, the docs, and the main user-facing surfaces, plus the existing `tickets/`
2. Think like a product manager and propose net-new features the product should have next
- Net-new capabilities a user would want, not bugs, refactors, or chores
- Skip anything an existing ticket already covers, and anything already built
- Favour features that fit the product's direction and are worth building
3. Write each proposed feature as a new ticket under `tickets/`, following the ticket format
4. Show a short summary of what you proposed via `showMarkdown()`
5 changes: 3 additions & 2 deletions packages/the-framework/src/preset-catalog.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const PARAMLESS = [
presets.quickWins,
presets.spikeAndPlan,
presets.suggestNewTickets,
presets.suggestNewFeatures,
presets.suggestTicketsToWorkOn,
presets.drainQueue,
presets.triageQuick,
Expand All @@ -38,8 +39,8 @@ test('every preset keeps its exact run-kind name', () => {
[
'drain-queue', 'import-tickets', 'maintainability', 'maintenance', 'market-research',
'quick-wins', 'readability', 'research', 'security-audit', 'spike-and-plan',
'suggest-new-tickets', 'suggest-tickets-to-work-on', 'triage-consensual', 'triage-quick',
'ux',
'suggest-new-features', 'suggest-new-tickets', 'suggest-tickets-to-work-on',
'triage-consensual', 'triage-quick', 'ux',
],
)
})
Expand Down
12 changes: 12 additions & 0 deletions packages/the-framework/src/preset-catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
PRESETS_RESEARCH,
PRESETS_SECURITY_AUDIT,
PRESETS_SPIKE_AND_PLAN,
PRESETS_SUGGEST_NEW_FEATURES,
PRESETS_SUGGEST_NEW_TICKETS,
PRESETS_SUGGEST_TICKETS_TO_WORK_ON,
PRESETS_TRIAGE_CONSENSUAL,
Expand Down Expand Up @@ -99,6 +100,16 @@ export const presets = {
/** [Suggest new tickets] (#462/#683): the dashboard prefills this one line and the user edits it freely. */
suggestNewTickets: definePreset({ name: 'suggest-new-tickets', template: PRESETS_SUGGEST_NEW_TICKETS, label: 'Suggest new tickets' }),

/**
* [Suggest new features] (#1109): the product-inward, generative corner of the PM cluster. It
* studies what the product does today and proposes net-new features as tickets in `tickets/`.
* Distinct from its neighbours: `suggestNewTickets` echoes a line the human types,
* `marketResearch` looks outward at the market, and `suggestTicketsToWorkOn` picks from tickets
* that already exist. Autonomous rather than gated — a proposal is a reviewable ticket, so the
* human triages later instead of approving mid-run, which also keeps it usable unattended.
*/
suggestNewFeatures: definePreset({ name: 'suggest-new-features', template: PRESETS_SUGGEST_NEW_FEATURES, label: 'Suggest new features', tooltip: 'Propose net-new features as tickets in `tickets/`' }),

/**
* [Suggest tickets to work on] (#698): the gated sibling of the triage pair. It ends in
* `<AWAIT>`, so it is deliberately kept out of {@link AUTO_PM_JOBS} — firing it unattended
Expand Down Expand Up @@ -143,6 +154,7 @@ export const LAUNCHER_PRESETS: readonly PresetDef[] = [
presets.securityAudit,
presets.ux,
presets.suggestNewTickets,
presets.suggestNewFeatures,
presets.suggestTicketsToWorkOn,
presets.spikeAndPlan,
presets.quickWins,
Expand Down
Loading