Skip to content

Commit e2ca165

Browse files
committed
fix: address third round of Copilot review feedback on community_catalog_docs
- Parameterize list_community_extensions(path=) and render_community_extensions_table(path=) so callers can supply a custom catalog path without monkeypatching module globals; update tests to use explicit path= args instead of unittest.mock.patch (r3244776065) - Escape raw field values (name, description) with _render_cell() BEFORE composing Markdown link syntax [name](url) so a pipe inside a name/description cannot break a link target; render_row() no longer re-escapes already-escaped values (r3244829318) - Fix _format_tags() filter order: clean (replace+strip) first, then filter on the cleaned value β€” a tag like ' | ' previously passed the filter but produced an empty backtick span after pipe removal (r3244829330) - Update test_tags_containing_pipe: assert row is well-formed (6 pipe separators for 5-column table), assert id falls back to ext_id when 'id' field is absent (r3244829343) - Change pytest.raises(Exception) to pytest.raises(json.JSONDecodeError) for the malformed JSON test β€” the broad Exception catch masks unrelated failures (r3244829358) - render_community_extensions_table() now returns a trailing newline so Markdown renderers see a blank line between the last table row and subsequent paragraphs; restore footer paragraph in extensions.md that was previously crammed onto same line as last table row (r3244829373) - Update --markdown help text to make 'ignores filters' behavior explicit rather than relying on the runtime warning alone (r3244829452)
1 parent a08af08 commit e2ca165

36 files changed

Lines changed: 789 additions & 2192 deletions

β€Ž.gitattributesβ€Ž

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
11
* text=auto eol=lf
2-
3-
.github/workflows/*.lock.yml linguist-generated=true merge=ours -whitespace

β€Ž.github/dependabot.ymlβ€Ž

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
updates:
2-
- directory: /
3-
package-ecosystem: pip
4-
schedule:
5-
interval: weekly
6-
- directory: /
7-
ignore:
8-
- dependency-name: "github/gh-aw-actions/**" # Managed by gh aw compile. Version-locked to the gh-aw compiler; do not bump.
9-
package-ecosystem: github-actions
10-
schedule:
11-
interval: weekly
121
version: 2
2+
updates:
3+
- package-ecosystem: "pip"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
8+
- package-ecosystem: "github-actions"
9+
directory: "/"
10+
schedule:
11+
interval: "weekly"

β€Ž.github/workflows/codeql.ymlβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ jobs:
2222
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2323

2424
- name: Initialize CodeQL
25-
uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
25+
uses: github/codeql-action/init@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4
2626
with:
2727
languages: ${{ matrix.language }}
2828

2929
- name: Perform CodeQL Analysis
30-
uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
30+
uses: github/codeql-action/analyze@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4
3131
with:
3232
category: "/language:${{ matrix.language }}"

β€Ž.github/workflows/lint.ymlβ€Ž

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,6 @@ jobs:
1313
steps:
1414
- name: Checkout
1515
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
16-
with:
17-
fetch-depth: 1
18-
19-
- name: Run git diff --check
20-
shell: bash
21-
env:
22-
EVENT_NAME: ${{ github.event_name }}
23-
PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
24-
PUSH_BEFORE_SHA: ${{ github.event.before }}
25-
GITHUB_SHA: ${{ github.sha }}
26-
run: |
27-
set -euo pipefail
28-
29-
if [ "$EVENT_NAME" = "pull_request" ]; then
30-
git fetch --no-tags --depth=1 origin "+${PR_BASE_SHA}:refs/checks/pr-base"
31-
git diff --check refs/checks/pr-base HEAD
32-
elif [ "$PUSH_BEFORE_SHA" = "0000000000000000000000000000000000000000" ]; then
33-
git diff-tree --check --no-commit-id --root -r "$GITHUB_SHA"
34-
else
35-
git fetch --no-tags --depth=1 origin "+${PUSH_BEFORE_SHA}:refs/checks/push-before"
36-
git diff --check refs/checks/push-before HEAD
37-
fi
3816

3917
- name: Run markdownlint-cli2
4018
uses: DavidAnson/markdownlint-cli2-action@ded1f9488f68a970bc66ea5619e13e9b52e601cd # v23

β€Ž.github/workflows/stale.ymlβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
stale:
1515
runs-on: ubuntu-latest
1616
steps:
17-
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10
17+
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10
1818
with:
1919
# Days of inactivity before an issue or PR becomes stale
2020
days-before-stale: 150

β€ŽAGENTS.mdβ€Ž

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -379,32 +379,6 @@ Implementation: Extends `YamlIntegration` (parallel to `TomlIntegration`):
379379
4. Uses `yaml.safe_dump()` for header fields to ensure proper escaping
380380
5. Sets `context_file = "AGENTS.md"` so the base setup manages the Spec Kit context section there
381381

382-
## Branch Naming Convention
383-
384-
All branches **must** follow this pattern:
385-
386-
```
387-
<type>/<number>-<short-slug>
388-
```
389-
390-
Where `<number>` is either an issue number or a PR number β€” whichever is created first.
391-
392-
| Prefix | When to use | Example |
393-
|---|---|---|
394-
| `feat/` | New features | `feat/2342-workflow-cli-alignment` |
395-
| `fix/` | Bug fixes | `fix/2653-paths-only-validation` |
396-
| `docs/` | Documentation changes | `docs/2677-branch-naming-convention` |
397-
| `community/` | Community catalog additions | `community/2492-add-mde-extension` |
398-
| `chore/` | Maintenance, tooling, CI | `chore/2366-editorconfig` |
399-
400-
**Rules:**
401-
402-
1. Always include the issue or PR number immediately after the prefix β€” this is what makes branches traceable
403-
2. Use kebab-case for the slug
404-
3. Keep the slug short β€” enough to identify the work without looking up the issue
405-
406-
---
407-
408382
## Common Pitfalls
409383

410384
1. **Using shorthand keys for CLI-based integrations**: For CLI-based integrations (`requires_cli: True`), the `key` must match the executable name (e.g., `"cursor-agent"` not `"cursor"`). `shutil.which(key)` is used for CLI tool checks β€” mismatches require special-case mappings. IDE-based integrations (`requires_cli: False`) are not subject to this constraint.

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,6 @@
22

33
<!-- insert new changelog below this comment -->
44

5-
## [0.8.13] - 2026-05-21
6-
7-
### Changed
8-
9-
- fix: while/do-while loop condition reads stale iteration-0 step output (#2662)
10-
- docs: fix directory hierarchy in README examples (#2639)
11-
- fix(catalogs): reject boolean priority in extension and preset catalog readers (#2589)
12-
- Update Agent Governance extension to v1.2.0 (#2659)
13-
- Add agentic workflows for community catalog submissions (#2655)
14-
- feat: add self-check tip to check output (#2574)
15-
- fix(cli): clarify exception diagnostics (#2602)
16-
- ci: add diff whitespace check (#2572)
17-
- chore: release 0.8.12, begin 0.8.13.dev0 development (#2648)
18-
19-
## [0.8.12] - 2026-05-20
20-
21-
### Changed
22-
23-
- fix(codex): inject dot-to-hyphen hook command note in Codex skills (#2503)
24-
- Update Squad Bridge extension to v1.3.0 (#2645)
25-
- Update Superpowers Implementation Bridge extension to v0.5.0 (#2644)
26-
- Add Team Assign extension to community catalog (#2642)
27-
- refactor: migrate extension catalog stack parsing to shared base (#2576)
28-
- Update Architecture Workflow extension to v1.1.0 (#2588)
29-
- fix(workflow): support integration: auto to follow project's initialized AI (#2421)
30-
- Add Superpowers Implementation Bridge extension to community catalog (#2586)
31-
- Add Interactive HTML Preview extension to community catalog (#2585)
32-
- chore: release 0.8.11, begin 0.8.12.dev0 development (#2584)
33-
- Update Agent Governance extension to v1.1.0 (#2583)
34-
35-
## [0.8.11] - 2026-05-15
36-
37-
### Changed
38-
39-
- refactor: extract _version.py from __init__.py (PR-3/8) (#2550)
40-
- Add Time Machine extension to community catalog (#2580)
41-
- fix(powershell): ensure UTF-8 templates are written without BOM (#2280)
42-
- docs: document high-assurance spec workflow (#2518)
43-
- docs: fix script name in directory tree examples (#2555)
44-
- Fix preset skill description precedence (#2538)
45-
- fix(integration): clarify multi-install guidance (#2549)
46-
- feat: add version feature reporting (#2548)
47-
- Add Architecture Workflow extension to community catalog (#2565)
48-
- chore: release 0.8.10, begin 0.8.11.dev0 development (#2562)
49-
505
## [0.8.10] - 2026-05-14
516

527
### Changed

β€ŽCONTRIBUTING.mdβ€Ž

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ On [GitHub Codespaces](https://github.com/features/codespaces) it's even simpler
3838
1. Fork and clone the repository
3939
1. Configure and install the dependencies: `uv sync --extra test`
4040
1. Make sure the CLI works on your machine: `uv run specify --help`
41-
1. Create a new branch: `git checkout -b <type>/<number>-<short-slug>` (see [Branch naming](#branch-naming) below)
41+
1. Create a new branch: `git checkout -b my-branch-name`
4242
1. Make your change, add tests, and make sure everything still works
4343
1. Test the CLI functionality with a sample project if relevant
4444
1. Push to your fork and submit a pull request
@@ -55,20 +55,6 @@ Here are a few things you can do that will increase the likelihood of your pull
5555
- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
5656
- Test your changes with the Spec-Driven Development workflow to ensure compatibility.
5757

58-
### Branch naming
59-
60-
We recommend naming branches as `<type>/<number>-<short-slug>`, where `<number>` is the issue or PR number (whichever comes first) and `<type>` is one of:
61-
62-
| Prefix | When to use | Example |
63-
|---|---|---|
64-
| `feat/` | New features | `feat/2342-workflow-cli-alignment` |
65-
| `fix/` | Bug fixes | `fix/2653-paths-only-validation` |
66-
| `docs/` | Documentation changes | `docs/2677-branch-naming-convention` |
67-
| `community/` | Community catalog additions | `community/2492-add-mde-extension` |
68-
| `chore/` | Maintenance, tooling, CI | `chore/2366-editorconfig` |
69-
70-
Including the issue or PR number makes branches traceable β€” especially useful since the project uses squash merges and `git branch --merged` won't detect merged branches. If you start with a PR (no issue), use the PR number once it's assigned.
71-
7258
## Development workflow
7359

7460
When working on spec-kit:

β€ŽREADME.mdβ€Ž

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -400,24 +400,23 @@ The produced specification should contain a set of user stories and functional r
400400
At this stage, your project folder contents should resemble the following:
401401

402402
```text
403-
.
404-
β”œβ”€β”€ .specify
405-
β”‚ β”œβ”€β”€ memory
406-
β”‚ β”‚ └── constitution.md
407-
β”‚ β”œβ”€β”€ scripts
408-
β”‚ β”‚ └── bash
409-
β”‚ β”‚ β”œβ”€β”€ check-prerequisites.sh
410-
β”‚ β”‚ β”œβ”€β”€ common.sh
411-
β”‚ β”‚ β”œβ”€β”€ create-new-feature.sh
412-
β”‚ β”‚ β”œβ”€β”€ setup-plan.sh
413-
β”‚ β”‚ └── setup-tasks.sh
414-
β”‚ └── templates
415-
β”‚ β”œβ”€β”€ plan-template.md
416-
β”‚ β”œβ”€β”€ spec-template.md
417-
β”‚ └── tasks-template.md
418-
└── specs
419-
└── 001-create-taskify
420-
└── spec.md
403+
└── .specify
404+
β”œβ”€β”€ memory
405+
β”‚ └── constitution.md
406+
β”œβ”€β”€ scripts
407+
β”‚ └── bash
408+
β”‚ β”œβ”€β”€ check-prerequisites.sh
409+
β”‚ β”œβ”€β”€ common.sh
410+
β”‚ β”œβ”€β”€ create-new-feature.sh
411+
β”‚ β”œβ”€β”€ setup-plan.sh
412+
β”‚ └── setup-tasks.sh
413+
β”œβ”€β”€ specs
414+
β”‚ └── 001-create-taskify
415+
β”‚ └── spec.md
416+
└── templates
417+
β”œβ”€β”€ plan-template.md
418+
β”œβ”€β”€ spec-template.md
419+
└── tasks-template.md
421420
```
422421

423422
### **STEP 3:** Functional specification clarification (required before planning)
@@ -464,31 +463,30 @@ The output of this step will include a number of implementation detail documents
464463
```text
465464
.
466465
β”œβ”€β”€ CLAUDE.md
467-
β”œβ”€β”€ .specify
468-
β”‚ β”œβ”€β”€ memory
469-
β”‚ β”‚ └── constitution.md
470-
β”‚ β”œβ”€β”€ scripts
471-
β”‚ β”‚ └── bash
472-
β”‚ β”‚ β”œβ”€β”€ check-prerequisites.sh
473-
β”‚ β”‚ β”œβ”€β”€ common.sh
474-
β”‚ β”‚ β”œβ”€β”€ create-new-feature.sh
475-
β”‚ β”‚ β”œβ”€β”€ setup-plan.sh
476-
β”‚ β”‚ └── setup-tasks.sh
477-
β”‚ └── templates
478-
β”‚ β”œβ”€β”€ CLAUDE-template.md
479-
β”‚ β”œβ”€β”€ plan-template.md
480-
β”‚ β”œβ”€β”€ spec-template.md
481-
β”‚ └── tasks-template.md
482-
└── specs
483-
└── 001-create-taskify
484-
β”œβ”€β”€ contracts
485-
β”‚ β”œβ”€β”€ api-spec.json
486-
β”‚ └── signalr-spec.md
487-
β”œβ”€β”€ data-model.md
488-
β”œβ”€β”€ plan.md
489-
β”œβ”€β”€ quickstart.md
490-
β”œβ”€β”€ research.md
491-
└── spec.md
466+
β”œβ”€β”€ memory
467+
β”‚ └── constitution.md
468+
β”œβ”€β”€ scripts
469+
β”‚ └── bash
470+
β”‚ β”œβ”€β”€ check-prerequisites.sh
471+
β”‚ β”œβ”€β”€ common.sh
472+
β”‚ β”œβ”€β”€ create-new-feature.sh
473+
β”‚ β”œβ”€β”€ setup-plan.sh
474+
β”‚ └── setup-tasks.sh
475+
β”œβ”€β”€ specs
476+
β”‚ └── 001-create-taskify
477+
β”‚ β”œβ”€β”€ contracts
478+
β”‚ β”‚ β”œβ”€β”€ api-spec.json
479+
β”‚ β”‚ └── signalr-spec.md
480+
β”‚ β”œβ”€β”€ data-model.md
481+
β”‚ β”œβ”€β”€ plan.md
482+
β”‚ β”œβ”€β”€ quickstart.md
483+
β”‚ β”œβ”€β”€ research.md
484+
β”‚ └── spec.md
485+
└── templates
486+
β”œβ”€β”€ CLAUDE-template.md
487+
β”œβ”€β”€ plan-template.md
488+
β”œβ”€β”€ spec-template.md
489+
└── tasks-template.md
492490
```
493491

494492
Check the `research.md` document to ensure that the right tech stack is used, based on your instructions. You can ask Claude Code to refine it if any of the components stand out, or even have it check the locally-installed version of the platform/framework you want to use (e.g., .NET).

0 commit comments

Comments
Β (0)