* docs: clarify capture_thought is an optional convention (#1873) Issue #1873 merged /gsd:extract-learnings with an optional capture_thought hook, but the docs never explained what the tool is or where it comes from — readers couldn't tell whether it was a bundled GSD tool, a required dependency, or something they had to install. This surfaced in a user question on that issue's thread. Clarify in docs/FEATURES.md §112 and the workflow file that capture_thought is a convention — any MCP server exposing a tool with that name will be used; if none is present, LEARNINGS.md remains the primary output and the step is a silent no-op. No behavioral change. All 23 extract-learnings tests still pass. * fix(security): add human to detection message; test [/INST] closing form neutralization - Detection message now lists <human> alongside <system>/<assistant>/<user> - Sanitizer regex extended to cover [/INST] closing form (was only [INST]) - Detection pattern extended to cover [/INST] closing form - New sanitizeForPrompt test asserts [/INST] is neutralized Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(config): add workflow.security_* keys to VALID_CONFIG_KEYS Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add language tag to fenced code block in FEATURES.md Fixes MD040 lint finding in PR #2379 — the capture_thought tool signature example was missing a javascript language identifier. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Tom Boucher <trekkie@nomorestars.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2371,6 +2371,20 @@ Test suite that scans all agent, workflow, and command files for embedded inject
|
||||
|
||||
**Produces:** `{phase}-LEARNINGS.md` with YAML frontmatter (phase, project, counts per category, missing_artifacts)
|
||||
|
||||
**Optional integration — `capture_thought`:** `capture_thought` is a **convention, not a bundled tool**. GSD does not ship one and does not require one. The workflow checks whether any MCP server in the current session exposes a tool named `capture_thought` and, if so, calls it once per extracted learning with the signature below. If no such tool is present, the step is skipped silently and `LEARNINGS.md` remains the primary output.
|
||||
|
||||
Expected tool signature:
|
||||
```javascript
|
||||
capture_thought({
|
||||
category: "decision" | "lesson" | "pattern" | "surprise",
|
||||
phase: <phase_number>,
|
||||
content: <learning_text>,
|
||||
source: <artifact_name>
|
||||
})
|
||||
```
|
||||
|
||||
Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style servers, `claude-mem`, or `mem0`-style servers) can implement this tool name to have learnings routed into their knowledge base automatically with `project`, `phase`, and `source` metadata. Everyone else can use `/gsd-extract-learnings` without any extra setup — the `LEARNINGS.md` artifact is the feature.
|
||||
|
||||
---
|
||||
|
||||
### 113. SDK Workstream Support
|
||||
|
||||
Reference in New Issue
Block a user