Skip to content
Merged
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
72 changes: 59 additions & 13 deletions .github/workflows/feature-ideation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,22 @@
# 2. Replace the `project_context` value with a 3-5 sentence description
# of your project, its target users, and the competitive landscape Mary
# should research. This is the only required customisation.
# 3. (Optional) Adjust the schedule cron if Friday morning UTC doesn't suit.
# 4. Ensure GitHub Discussions is enabled with an "Ideas" category.
# 5. Confirm the org-level secret CLAUDE_CODE_OAUTH_TOKEN is accessible.
# 3. (Optional) Copy standards/feature-ideation-sources.md from
# petry-projects/.github to .github/feature-ideation-sources.md in your
# repo and trim/extend it for your project. Mary uses YOUR copy — not the
# central template — so each repo controls its own source list.
# Pass `sources_file: path/to/your-list.md` to the reusable workflow if
# you prefer a different location.
# 4. (Optional) Adjust the schedule cron if Friday morning UTC doesn't suit.
# 5. Ensure GitHub Discussions is enabled with an "Ideas" category.
# 6. Confirm the org-level secret CLAUDE_CODE_OAUTH_TOKEN is accessible.
#
# Standard: https://github.com/petry-projects/.github/blob/main/standards/ci-standards.md#8-feature-ideation-feature-ideationyml--bmad-method-repos
name: Feature Research & Ideation (BMAD Analyst)

on:
schedule:
- cron: '0 7 * * 5' # Friday 07:00 UTC (3 AM EDT / 2 AM EST)
- cron: '0 7 * * 5' # Friday 07:00 UTC (3 AM EDT / 2 AM EST)
workflow_dispatch:
inputs:
focus_area:
Expand All @@ -53,6 +59,15 @@ on:
- quick
- standard
- deep
dry_run:
description: 'Skip Discussion mutations and log them to a JSONL artifact instead. Use this on a fork to smoke-test before going live.'
required: false
default: false
type: boolean
# Auto-enhance a freshly-created idea: when a new Discussion is opened in the
# Ideas category, the analyst researches and refines it in single-idea mode.
discussion:
types: [created]

permissions: {}

Expand All @@ -62,30 +77,61 @@ concurrency:

jobs:
ideate:
# On the `discussion` trigger, only run for new ideas in the Ideas category
# and skip the bot's own creations (avoids re-enhancing scheduled output;
# enhancement posts a comment, which does not re-fire `discussion: created`).
# Schedule/dispatch runs are unaffected by this guard.
if: >-
github.event_name != 'discussion' ||
(github.event.discussion.category.slug == 'ideas' &&
github.event.discussion.user.type != 'Bot')
# Permissions cascade from the calling job to the reusable workflow.
# The reusable workflow's two jobs (gather-signals + analyze) need:
# - contents: read (checkout, file reads)
# - issues: read (signal collection)
# - pull-requests: read (signal collection)
# - discussions: write (CRITICAL — create/update Discussion threads)
# - id-token: write (claude-code-action OIDC for GitHub App token)
# - contents: read (checkout, file reads)
# - issues: read (signal collection)
# - pull-requests: read (signal collection)
# - discussions: write (CRITICAL — create/update Discussion threads)
# - id-token: write (claude-code-action OIDC for GitHub App token)
# - actions: read (feed checkpoint — last successful run query)
permissions:
contents: read
issues: read
pull-requests: read
discussions: write
id-token: write
uses: petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@376a4fcb1117444595e3e702fa450873d0e54310 # v2
actions: read
uses: petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@897e4dede3518cdd7273b9dc63e607d0d05cbdda # v1
with:
# On the `discussion: created` trigger this carries the new Discussion's
# number → the reusable runs single-idea enhancement mode. Empty on
# schedule/dispatch → normal scan. Do not edit this line.
target_discussion: ${{ github.event.discussion.number }}
# === CUSTOMISE THIS PER REPO — the only required edit ===
# Replace this paragraph with a 3-5 sentence description of your project,
# its target users, and the competitive landscape. The more specific you
# are, the more useful the proposals.
project_context: |
TODO: Replace this with a description of the project and its market.
Example: "ProjectX is a [type of product] for [target user]. Competitors
include A, B, C. Key emerging trends in this space: X, Y, Z."
Broodly is a field-first beekeeping decision-support app for hobbyist
and sideliner beekeepers, delivered on iOS, Android, and web from a
single Expo + React Native codebase with a Go (chi + gqlgen) backend on
GCP. Its core differentiator is a zero-tap beeyard experience: once an
inspection session starts, the entire multi-hive flow is voice-driven —
observations, hive navigation, and photo triggers are all voice-commanded
so beekeepers never need to tap the phone in the field. The app pairs AI
image/voice analysis (Vertex AI, Gemini) with confidence-scored,
recovery-oriented recommendations and seasonal planning. Competitors
include HiveTracks, Beepods, Apiary Book, and BroodMinder; key emerging
trends to research are on-device/edge ML for hive health, voice-first
field UX, climate-adaptive seasonal forecasting, and sensor/IoT hive
telemetry integration.
# === OPTIONAL: repo-local reputable source list ===
# Copy standards/feature-ideation-sources.md from petry-projects/.github
# to .github/feature-ideation-sources.md and customise it. The reusable
# workflow defaults to that path, so you only need to uncomment and change
# sources_file below if you store the list somewhere else.
# sources_file: 'docs/feature-ideation-sources.md'
focus_area: ${{ inputs.focus_area || '' }}
research_depth: ${{ inputs.research_depth || 'standard' }}
dry_run: ${{ inputs.dry_run || false }}
secrets:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
Loading