From e2073c8d9d41383d35fd4671fdd0371b66884279 Mon Sep 17 00:00:00 2001 From: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com> Date: Fri, 19 Jun 2026 15:46:58 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20implement=20issue=20#254=20=E2=80=94=20?= =?UTF-8?q?Compliance:=20non-stub-feature-ideation.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/feature-ideation.yml | 72 +++++++++++++++++++++----- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/.github/workflows/feature-ideation.yml b/.github/workflows/feature-ideation.yml index a717b73d..6982344c 100644 --- a/.github/workflows/feature-ideation.yml +++ b/.github/workflows/feature-ideation.yml @@ -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: @@ -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: {} @@ -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 }}