Skip to content

Commit 899b9c2

Browse files
authored
feat(backlog): daily standup defaults, iteration/sprint, unassigned items view (#174)
1 parent 1f054c5 commit 899b9c2

File tree

56 files changed

+3829
-758
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+3829
-758
lines changed

.cursorignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
2+
node_modules/
3+
.venv/
4+
.env
5+
.env.local
6+
.env.development.local
7+
.env.test.local
8+
.env.production.local
9+
.env.development
10+
.env.test
11+
.env.production
12+
build/
13+
__pycache__/
14+
.ruff_cache/
15+
.pytest_cache/
16+
.semgrep
17+
.coverage_cache/
18+
dist/

.github/workflows/pr-orchestrator.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ concurrency:
2121
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
2222
cancel-in-progress: true
2323

24+
permissions:
25+
contents: read
26+
2427
jobs:
2528
changes:
2629
name: Detect code changes

CHANGELOG.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,39 @@ All notable changes to this project will be documented in this file.
99

1010
---
1111

12+
## [0.26.16] - 2026-02-02
13+
14+
### Added (0.26.16)
15+
16+
- **Daily standup and progress support** (OpenSpec change `daily-standup-progress-support`, fixes [#168](https://github.com/nold-ai/specfact-cli/issues/168))
17+
- **`specfact backlog daily <adapter>`**: Standup view listing my/filtered backlog items with id, title, status, last-updated; optional standup summary lines (yesterday/today/blockers) when present in item body (parsed from `**Yesterday:**`, `**Today:**`, `**Blockers:**`).
18+
- **`--assignee`, `--state`, `--labels`, `--limit`**: Filter items; assignee filter for "my items" standup.
19+
- **`--post` with `--yesterday`, `--today`, `--blockers`**: Post standup comment to the first item's linked issue when the adapter supports comments (GitHub/ADO); adapters that do not support comments report clearly without attempting to post.
20+
- **Adapter capability**: `BacklogAdapter.supports_add_comment()` (default `False`); GitHub and ADO adapters override to return `True` when configured; `add_comment(item, body)` used for posting.
21+
- **Docs**: `docs/guides/agile-scrum-workflows.md` (daily standup bullet), `docs/guides/devops-adapter-integration.md` (standup comments).
22+
- **Daily standup defaults, iteration/sprint, unassigned items view** (OpenSpec change `daily-standup-progress-support`, extends [#168](https://github.com/nold-ai/specfact-cli/issues/168))
23+
- **Default standup scope**: When `--state`/`--limit`/`--assignee` are not passed, defaults apply (state=open, limit=20, optional assignee from config). Configure via `SPECFACT_STANDUP_STATE`, `SPECFACT_STANDUP_LIMIT`, `SPECFACT_STANDUP_ASSIGNEE` or optional `.specfact/standup.yaml`; CLI options override config/env.
24+
- **`--iteration` and `--sprint`**: Filter standup view to current iteration/sprint when adapter supports it (e.g. ADO); pass-through to fetch and filters. Sprint/iteration end date displayed when provided by adapter or config (`standup.sprint_end_date`, `SPECFACT_STANDUP_SPRINT_END`).
25+
- **Unassigned/pending items**: Second table **Pending / open for commitment** with unassigned items (same scope); `--show-unassigned`/`--no-show-unassigned` (default true), `--unassigned-only` to show only unassigned.
26+
- **`--blockers-first`**: Sort so items with non-empty blockers appear first. Optional priority/value column when `show_priority` or `show_value` in standup config and BacklogItem has priority/business_value (value-driven/SAFe).
27+
- **Docs**: `docs/guides/agile-scrum-workflows.md` (daily standup: default scope, iteration/sprint, unassigned, blockers-first, priority, Kanban vs Scrum/SAFe, out-of-scope); `docs/guides/devops-adapter-integration.md` (standup config, iteration/sprint and sprint end date per adapter, blockers-first/priority, sprint goal in board/sprint settings).
28+
- **Interactive step-by-step review and Copilot export** (OpenSpec change `daily-standup-progress-support`, extends [#168](https://github.com/nold-ai/specfact-cli/issues/168))
29+
- **`--interactive`**: Step-by-step review with arrow-key selection (questionary): pick a story to view full detail (refine-like: description, acceptance criteria, standup fields, comments from adapter when available); navigation: Next story, Previous story, Back to list, Exit. Complementary to the backlog; not a replacement.
30+
- **`--copilot-export <path>`**: Write summarized progress per story (same scope as daily) to a Markdown file for Copilot slash-command use during standup; one section per item (ID, title, status, assignees, last updated, progress, blockers, optional value score).
31+
- **`--suggest-next`**: In interactive mode, show suggested next item by value score (business_value / max(1, story_points × priority)) for pending items.
32+
- **Adapter**: Optional `get_comments(item)` on BacklogAdapter (default `[]`); GitHub adapter implements to fetch issue comments for interactive detail view.
33+
- **Docs**: `docs/guides/agile-scrum-workflows.md` (interactive review, Copilot export); `docs/guides/devops-adapter-integration.md` (comment fetch, value score/suggestions).
34+
- **Project backlog context** (OpenSpec change `daily-standup-progress-support`, extends [#168](https://github.com/nold-ai/specfact-cli/issues/168))
35+
- **`.specfact/backlog.yaml`**: Store org/project per adapter (e.g. `github.repo_owner`, `github.repo_name`; `ado.org`, `ado.project`, `ado.team`); no tokens; resolution order: CLI args > env (`SPECFACT_GITHUB_REPO_OWNER`, `SPECFACT_ADO_ORG`, etc.) > file. Used by all backlog commands (daily, refine, sync bridge) so adapter context can be omitted after one-time config.
36+
- **Git remote inference**: When org/repo or org/project are still missing after CLI/env/config, infer from `git remote get-url origin` when run from a clone (GitHub HTTPS/SSH; ADO HTTPS, SSH with keys `git@ssh.dev.azure.com:v3/...`, other SSH `user@dev.azure.com:v3/...`). Clear error with guidance if inference fails.
37+
- **Docs**: `docs/guides/devops-adapter-integration.md` (project backlog context, git fallback); tutorial and agile-scrum updated for auto-detect.
38+
- **Daily standup: slash prompt, summarize, and tutorial** (OpenSpec change `daily-standup-progress-support`, extends [#168](https://github.com/nold-ai/specfact-cli/issues/168))
39+
- **`resources/prompts/specfact.backlog-daily.md`**: Slash-command prompt for interactive walkthrough with DevOps team (story-by-story, current focus, issues/open questions, discussion notes as comments); use as `specfact.daily` or `specfact.backlog-daily`.
40+
- **`--summarize`** (stdout) and **`--summarize-to <path>`**: Output a prompt (instruction + filter context + standup data) for slash command or Copilot to generate a standup summary. Per-item data includes **body (description)** and **comments (annotations)** when adapter supports `get_comments`; wrapped in `--- BEGIN STANDUP PROMPT ---` / `--- END STANDUP PROMPT ---` for extraction. Command returns after output (no standup tables when summarizing).
41+
- **Tutorial**: `docs/getting-started/tutorial-daily-standup-sprint-review.md`; linked in `docs/_layouts/default.html` and `docs/index.md`.
42+
43+
---
44+
1245
## [0.26.15] - 2026-01-30
1346

1447
### Added (0.26.15)

docs/_layouts/default.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ <h2 class="docs-sidebar-title">
134134
<li><a href="{{ '/getting-started/installation/' | relative_url }}">Installation</a></li>
135135
<li><a href="{{ '/getting-started/first-steps/' | relative_url }}">First Steps</a></li>
136136
<li><a href="{{ '/getting-started/tutorial-backlog-refine-ai-ide/' | relative_url }}">Tutorial: Backlog Refine with AI IDE</a></li>
137+
<li><a href="{{ '/getting-started/tutorial-daily-standup-sprint-review/' | relative_url }}">Tutorial: Daily Standup and Sprint Review</a></li>
137138
</ul>
138139

139140
<p class="docs-nav-section">Guides</p>

docs/getting-started/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ uvx specfact-cli@latest plan init my-project --interactive
4747
- 📖 **[DevOps Backlog Integration](../guides/devops-adapter-integration.md)** 🆕 **NEW FEATURE** - Integrate SpecFact into agile DevOps workflows
4848
- 📖 **[Backlog Refinement](../guides/backlog-refinement.md)** 🆕 **NEW FEATURE** - AI-assisted template-driven refinement for standardizing work items
4949
- 📖 **[Tutorial: Backlog Refine with AI IDE](tutorial-backlog-refine-ai-ide.md)** 🆕 - End-to-end for agile DevOps teams: slash prompt, story quality, underspecification, splitting, DoR, custom templates
50+
- 📖 **[Tutorial: Daily Standup and Sprint Review](tutorial-daily-standup-sprint-review.md)** 🆕 - End-to-end daily standup: auto-detect repo (GitHub/ADO), view standup table, post comment, interactive, Copilot export
5051
- 📖 **[Use Cases](../guides/use-cases.md)** - See real-world examples
5152
- 📖 **[Command Reference](../reference/commands.md)** - Learn all available commands
5253

docs/getting-started/tutorial-backlog-refine-ai-ide.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,24 @@ This tutorial walks agile DevOps teams through integrating SpecFact CLI backlog
3636

3737
## Step 1: Run Backlog Refine and Get Items
3838

39-
From your repo root (or where your backlog lives):
39+
From your **repo root** (or where your backlog lives):
4040

4141
```bash
42-
# GitHub: fetch open items that need refinement (default: ignore already-refined)
43-
specfact backlog refine github --repo-owner OWNER --repo-name REPO --search "is:open label:feature" --limit 5 --preview
42+
# GitHub: org/repo are auto-detected from git remote when run from a GitHub clone
43+
specfact backlog refine github --search "is:open label:feature" --limit 5 --preview
4444

4545
# Or export to a temp file for your AI IDE to process (recommended for interactive loop)
46-
specfact backlog refine github --repo-owner OWNER --repo-name REPO --export-to-tmp --search "is:open label:feature" --limit 5
46+
specfact backlog refine github --export-to-tmp --search "is:open label:feature" --limit 5
47+
```
48+
49+
**Auto-detect from clone**: When you run from a **GitHub** clone (e.g. `https://github.com/owner/repo` or `git@github.com:owner/repo.git`), SpecFact infers `repo_owner` and `repo_name` from `git remote get-url origin`—no `--repo-owner`/`--repo-name` needed. When you run from an **Azure DevOps** clone (e.g. `https://dev.azure.com/org/project/_git/repo`; SSH keys: `git@ssh.dev.azure.com:v3/org/project/repo`; other SSH: `user@dev.azure.com:v3/org/project/repo`), org and project are inferred. Override with `.specfact/backlog.yaml`, env vars (`SPECFACT_GITHUB_REPO_OWNER`, `SPECFACT_ADO_ORG`, etc.), or CLI options when not in the repo or to override.
50+
51+
If you're **not** in a clone, pass adapter context explicitly:
52+
53+
```bash
54+
specfact backlog refine github --repo-owner OWNER --repo-name REPO --search "is:open label:feature" --limit 5 --preview
55+
# or ADO:
56+
specfact backlog refine ado --ado-org ORG --ado-project PROJECT --state Active --limit 5 --preview
4757
```
4858

4959
- Use `--ignore-refined` (default) so `--limit` applies to items that **need** refinement
@@ -116,10 +126,11 @@ When you’re satisfied with the refined content:
116126

117127
```bash
118128
# If you used --export-to-tmp, save the refined file as ...-refined.md, then:
119-
specfact backlog refine github --repo-owner OWNER --repo-name REPO --import-from-tmp --write
129+
# (From repo root, org/repo or org/project are auto-detected from git remote)
130+
specfact backlog refine github --import-from-tmp --write
120131

121132
# Or run refine interactively with --write (use with care; confirm each item)
122-
specfact backlog refine github --repo-owner OWNER --repo-name REPO --write --labels feature --limit 3
133+
specfact backlog refine github --write --labels feature --limit 3
123134
```
124135

125136
Use `--preview` (default) until you’re confident; use `--write` only when you want to update the remote backlog.

0 commit comments

Comments
 (0)