Align git-tasks with knowledge-backed planning workflows#14
Conversation
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/a01c1929-9198-400a-8e66-bf98867ac651 Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
|
@copilot imho we should probably have a git-tasks init command that generates in the repo (must be a git repo) a git-tasks.lock or something file where we have the necessary project card etc. (we have a data model for that already)? probably a git-tasks wiki init command too? or the wiki is already part of the tool and should be init at the global init? can discuss the design first. |
I agree. I’d separate it as:
That keeps |
|
@copilot what is the point of keeping wiki init then if the global init already calls that? |
Fair point — if |
|
@copilot fine with just the moduel init, without wiki init. please, implement that |
|
@YoanSallami I saw the tests passing with the update. could you do some vibe testing locally? |
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/95059cca-d6d4-4192-b9e9-fe4f040ab859 Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/95059cca-d6d4-4192-b9e9-fe4f040ab859 Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Implemented in |
Switch the shipped workflow to the inbox/knowledge model, link backlog items to knowledge docs, tighten reviewer handoff and PR context sync, and keep skill eval artifacts out of published installs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates git-tasks to support a repo-initialized, wiki-first “inbox → knowledge → planning” workflow, adds repo-level defaults for review handoff, and threads “Knowledge Links” through issues and story PRs for reviewer context.
Changes:
- Add
git-tasks initto bootstrapwiki/inbox/,wiki/knowledge/,wiki/knowledge/index.md, plus.git-tasks/config.json(owner/reviewers/planning horizons). - Introduce
Knowledge Linksmetadata across epics/sprints/stories and sync knowledge context into managed story PR bodies; enforce reviewer precedence (CLI > env > config reviewers > owner) forready-for-review. - Add eval fixtures + harness under
test/evals/, update tests/docs, and add LF line-ending policy + ignore eval workspace artifacts.
Reviewed changes
Copilot reviewed 23 out of 25 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| test/evals/git-tasks.evals.json | Adds eval scenarios covering knowledge index usage, no-CRUD cases, reviewer fallback, and legacy wiki handling. |
| test/evals/fixtures/raw-meeting-notes.md | Adds inbox-style meeting notes fixture for evals. |
| test/evals/fixtures/raw-feature-request.md | Adds inbox-style feature request fixture for evals. |
| test/evals/fixtures/legacy-processed-auth-plan.md | Adds legacy processed fixture for “historical context only” eval. |
| test/evals/fixtures/knowledge-index.md | Adds knowledge index fixture entry format. |
| test/evals/fixtures/knowledge-auth-plan.md | Adds structured knowledge node fixture with dash-case frontmatter. |
| test/evals/eval.js | Adds eval harness smoke tests and validates shipped skill content + eval set integrity. |
| test/cli.test.js | Expands CLI tests for init, knowledge flags, lifecycle reviewer rules, PR context syncing, and packaging constraints. |
| src/utils/templates.js | Adds Knowledge Links rendering to epic/sprint/story templates. |
| src/utils/metadata.js | Adds generic delimited-list parsing and list-based metadata setters; reuses for reviewers/knowledge links. |
| src/utils/config.js | Introduces .git-tasks/config.json loading/saving + repository-root resolution + default planning horizons. |
| src/commands/wiki.js | Refactors wiki structure to inbox/knowledge model, adds recursive list + safer show path resolution, removes old init behavior. |
| src/commands/story.js | Requires explicit story create metadata; adds --knowledge and merges knowledge links into story metadata on update/lifecycle. |
| src/commands/sprint.js | Requires explicit sprint create metadata; adds --knowledge and merges knowledge links on update. |
| src/commands/init.js | Adds new top-level init command enforcing git root and bootstrapping wiki + config defaults. |
| src/commands/epic.js | Requires explicit epic create metadata; adds --knowledge and merges knowledge links on update. |
| src/backends/index.js | Extends backend interface docs to include pull request operations used by lifecycle automation. |
| src/backends/github.js | Adds pr edit support and changes label ensuring behavior. |
| src/automation/lifecycle.js | Adds knowledge context to story PR bodies, syncs managed PR bodies, and implements reviewer precedence via repo config. |
| skills/git-tasks/SKILL.md | Updates skill guidance to wiki-first knowledge workflow, repo config defaults, and lifecycle handoff expectations. |
| package.json | Adds test:evals script for eval harness execution. |
| bin/git-tasks.js | Registers the new init command in the CLI. |
| README.md | Updates docs to reflect init/wiki-first workflow, config file, and knowledge-aware lifecycle guidance. |
| .gitignore | Ignores eval workspace artifacts under test/evals/git-tasks-workspace/. |
| .gitattributes | Enforces LF line endings via * text=auto eol=lf. |
Comments suppressed due to low confidence (1)
README.md:102
- Docs: the quick reference for
story create/story updatedoesn’t mention the new--knowledge/-koption even though the CLI supports it. Please update these synopsis lines to include the knowledge-link flag.
### User Stories
```bash
git-tasks story create "Title" -s <sprint> -e <epic> -d <desc> -p <points> --priority low|medium|high [-a <user>]
git-tasks story list [--sprint <n>] [--epic <n>] [--assignee <user>] [--state open|closed|all] [--short]
git-tasks story show <number> [--comments]
git-tasks story update <number> [--status open|in-progress|ready-for-review|closed] [--reviewer <user>]
</details>
---
💡 <a href="/Atena-IT/git-tasks/new/main?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
| function ensureLabel(name, color, description) { | ||
| try { | ||
| runGh(['label', 'list', '--json', 'name', '--jq', `.[].name`]); | ||
| } catch { | ||
| // ignore | ||
| } | ||
| try { | ||
| runGh(['label', 'create', name, '--color', color, '--description', description, '--force']); | ||
| } catch { | ||
| // label may already exist | ||
| } | ||
| runGh(['label', 'create', name, '--color', color, '--description', description, '--force']); | ||
| } |
| const requested = filename.endsWith('.md') ? filename : `${filename}.md`; | ||
| const filePath = resolve(wikiRoot, requested); | ||
| const relativePath = relative(wikiRoot, filePath); | ||
| if (!relativePath || relativePath.startsWith('..')) { | ||
| throw new Error('Wiki paths must stay inside the wiki/ directory.'); | ||
| } |
| ### Epics | ||
| ```bash | ||
| git-tasks epic create "Title" [-d <desc>] [-p <points>] [--start <date>] [--end <date>] [-a <user>] | ||
| git-tasks epic create "Title" -d <desc> -p <points> --start <date> --end <date> [-a <user>] |
| ### Sprints | ||
| ```bash | ||
| git-tasks sprint create "Title" [-e <epic>] [-d <desc>] [-p <points>] [--start <date>] [--end <date>] | ||
| git-tasks sprint create "Title" -e <epic> -d <desc> -p <points> --start <date> --end <date> [-a <user>] |
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/06259a5c-12d1-461b-999b-99a46f09f14a Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/06259a5c-12d1-461b-999b-99a46f09f14a Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/06259a5c-12d1-461b-999b-99a46f09f14a Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/06259a5c-12d1-461b-999b-99a46f09f14a Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/06259a5c-12d1-461b-999b-99a46f09f14a Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/06259a5c-12d1-461b-999b-99a46f09f14a Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Applied the thread changes across |
There was a problem hiding this comment.
Pull request overview
This PR updates git-tasks to support a wiki-first, knowledge-backed planning workflow by adding repo initialization, structured wiki conventions (wiki/inbox/, wiki/knowledge/, wiki/knowledge/index.md), repo-level config defaults (owner/reviewers/planning horizons), and “Knowledge Links” propagation into planning items and review handoffs.
Changes:
- Add
git-tasks initto bootstrap repo config (.git-tasks/config.json) and the new wiki structure (inbox/knowledge/index). - Add knowledge-link metadata plumbing across epic/sprint/story templates and update flows; enhance story lifecycle automation with reviewer precedence and PR context syncing.
- Add/relocate eval assets under
test/evals/, introduce repo line-ending policy, and ensure shipped installs don’t include eval artifacts.
Reviewed changes
Copilot reviewed 23 out of 25 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| test/evals/git-tasks.evals.json | Adds a structured eval set covering knowledge-index-first planning, no-CRUD knowledge updates, reviewer fallback, and legacy raw/processed migration behavior. |
| test/evals/fixtures/raw-meeting-notes.md | Adds inbox-style meeting notes fixture used by evals. |
| test/evals/fixtures/raw-feature-request.md | Adds inbox-style feature request fixture used by evals. |
| test/evals/fixtures/legacy-processed-auth-plan.md | Adds legacy processed fixture to test “read legacy, write forward” behavior. |
| test/evals/fixtures/knowledge-index.md | Adds a knowledge index fixture with an example entry. |
| test/evals/fixtures/knowledge-auth-plan.md | Adds a structured knowledge-node fixture with dash-case frontmatter and planning consequences. |
| test/evals/eval.js | Adds a Node test harness that smoke-tests init/wiki knowledge flow and validates shipped skill/eval set invariants. |
| test/cli.test.js | Expands CLI coverage for init, knowledge options, safer wiki show path handling, reviewer precedence, and knowledge link propagation. |
| src/utils/templates.js | Adds “Knowledge Links” to epic/sprint/story body templates. |
| src/utils/metadata.js | Adds list parsing/setting helpers and refactors reviewer parsing to share list normalization. |
| src/utils/config.js | Introduces repo config loading/saving and git-root resolution with defaults. |
| src/commands/wiki.js | Updates wiki semantics to inbox/knowledge, adds recursive list, and hardens show against path traversal/symlink escapes. |
| src/commands/story.js | Makes story create metadata required, adds --knowledge, improves update metadata editing, and integrates lifecycle/knowledge behaviors. |
| src/commands/sprint.js | Makes sprint create metadata required, adds --knowledge, and improves update behavior for title/metadata fields. |
| src/commands/init.js | New command to initialize wiki structure and .git-tasks/config.json at the git repo root. |
| src/commands/epic.js | Makes epic create metadata required, adds --knowledge, and supports dependency/blocker & metadata updates. |
| src/backends/index.js | Documents additional backend PR-related capabilities. |
| src/backends/github.js | Adds PR edit support; adjusts label ensuring to avoid failing when label creation isn’t permitted. |
| src/automation/lifecycle.js | Adds reviewer precedence (CLI > env > config reviewers > owner), knowledge-link propagation, and safe “managed PR body” syncing. |
| skills/git-tasks/SKILL.md | Updates skill guidance to enforce knowledge-index-first workflow and lifecycle/reviewer/knowledge conventions. |
| package.json | Adds test:evals script. |
| bin/git-tasks.js | Registers the new init command. |
| README.md | Documents init/config, knowledge workflow, knowledge links, and updated command usage. |
| .gitignore | Ignores eval workspace artifacts. |
| .gitattributes | Enforces LF line endings in-repo. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if (requestedKnowledgeLinks.length) { | ||
| const knowledgeLinks = parseMetadataList(getMetadataField(nextBody, 'Knowledge Links'), requestedKnowledgeLinks); | ||
| nextBody = setMetadataListField(nextBody, 'Knowledge Links', knowledgeLinks); | ||
| editOpts.body = nextBody; | ||
| } |
| function ensureLabels(labels) { | ||
| const existingLabels = listExistingLabels(); | ||
| const ensuredLabels = []; | ||
| for (const label of labels) { | ||
| if (existingLabels?.has(label)) { |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/ea17ee26-74fa-4436-906f-0c1512463c0b Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Applied in |
There was a problem hiding this comment.
Pull request overview
This PR updates the git-tasks CLI to support a wiki-first, knowledge-backed planning workflow: initialize a repo with a standardized wiki/inbox/ + wiki/knowledge/ layout, require/propagate Knowledge Links across backlog items, and tighten story lifecycle review handoff using repo config defaults.
Changes:
- Add
git-tasks initto bootstrapwiki/structure and write/maintain.git-tasks/config.json(owner, reviewers, planning horizons). - Introduce
Knowledge Linksmetadata across epic/sprint/story create+update flows and sync knowledge context into story PR bodies during lifecycle automation. - Add eval harness + fixtures under
test/evals/, plus packaging/line-ending hygiene updates.
Reviewed changes
Copilot reviewed 23 out of 25 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| test/evals/git-tasks.evals.json | Adds an eval set covering knowledge-index-first planning, no-CRUD knowledge updates, reviewer fallback, and legacy wiki context handling. |
| test/evals/fixtures/raw-meeting-notes.md | Adds inbox-style meeting notes fixture for planning decomposition evals. |
| test/evals/fixtures/raw-feature-request.md | Adds inbox-style feature request fixture for “knowledge-only/no backlog delta” eval. |
| test/evals/fixtures/legacy-processed-auth-plan.md | Adds legacy processed-plan fixture for “read legacy, write forward” eval coverage. |
| test/evals/fixtures/knowledge-index.md | Adds knowledge index fixture representing the new knowledge navigation entrypoint. |
| test/evals/fixtures/knowledge-auth-plan.md | Adds a structured knowledge node fixture with dash-case frontmatter and issue refs. |
| test/evals/eval.js | Adds a Node test harness that smoke-tests init + wiki flows and validates eval fixture integrity. |
| test/cli.test.js | Expands CLI tests for init, knowledge flags, reviewer precedence, PR context syncing, wiki path safety, and label-handling behavior. |
| src/utils/templates.js | Extends epic/sprint/story templates to include Knowledge Links metadata. |
| src/utils/metadata.js | Adds list parsing/helpers (parseMetadataList, setMetadataListField) and exports escapeRegex. |
| src/utils/config.js | Introduces repo config loading/saving and repository-root resolution via git. |
| src/commands/wiki.js | Reshapes wiki semantics to inbox/knowledge/index, adds recursive list, and adds path traversal / symlink escape protections. |
| src/commands/story.js | Requires more explicit story create metadata, adds --knowledge, enforces no-op update rejection, and syncs PR knowledge context. |
| src/commands/sprint.js | Requires more explicit sprint create metadata and adds --knowledge handling for create/update. |
| src/commands/init.js | New command to initialize wiki layout and .git-tasks/config.json with reviewer defaults. |
| src/commands/epic.js | Requires more explicit epic create metadata and adds update support for points/blockers/knowledge links. |
| src/backends/index.js | Updates backend contract documentation to include PR operations and editing. |
| src/backends/github.js | Adds safer label ensuring + retry behavior and implements editPullRequest. |
| src/automation/lifecycle.js | Adds reviewer precedence (explicit > env > config > owner), knowledge-link merging, and managed PR body syncing. |
| skills/git-tasks/SKILL.md | Updates the shipped skill to describe the init + wiki/knowledge workflow and lifecycle boundaries. |
| package.json | Adds test:evals script for the new eval harness. |
| bin/git-tasks.js | Registers the new init command in the CLI. |
| README.md | Updates public docs for init, knowledge workflow, reviewer defaults, and --knowledge usage. |
| .gitignore | Ignores eval workspace artifacts. |
| .gitattributes | Sets repo-wide LF line-ending policy. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| function getWikiRoot(rootDir = process.cwd()) { | ||
| return resolve(rootDir, WIKI_DIR); | ||
| } |
| if (!existsSync(WIKI_DIR)) { | ||
| console.log(chalk.yellow('Wiki not initialized. Run: git-tasks wiki init')); | ||
| console.log(chalk.yellow('Wiki not initialized. Run: git-tasks init')); | ||
| return; | ||
| } | ||
| const files = readdirSync(WIKI_DIR).filter(f => f.endsWith('.md')); | ||
| const files = listMarkdownFiles(WIKI_DIR); |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/cf8602dd-ecc7-4017-b6ca-71d9aee47d82 Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Atena-IT/git-tasks/sessions/cf8602dd-ecc7-4017-b6ca-71d9aee47d82 Co-authored-by: DiTo97 <40361744+DiTo97@users.noreply.github.com>
Applied in |
There was a problem hiding this comment.
Pull request overview
This PR updates the git-tasks CLI to support a wiki-first, knowledge-backed planning workflow (with repo bootstrap/init), adds “Knowledge Links” propagation across epics/sprints/stories and story PR handoff, and introduces an eval harness + fixtures to validate the intended agent workflow.
Changes:
- Add
git-tasks initto bootstrap.git-tasks/config.jsonpluswiki/inbox/andwiki/knowledge/(includingwiki/knowledge/index.md). - Extend planning + lifecycle flows with
--knowledgelinks, reviewer fallback precedence (CLI → env → config → owner), and safe syncing of knowledge context into managed story PR bodies. - Add eval harness/tests/fixtures and packaging hygiene (keep eval artifacts out of shipped skill installs; enforce LF via
.gitattributes).
Reviewed changes
Copilot reviewed 23 out of 25 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
src/commands/init.js |
New init command that bootstraps repo config and wiki layout at git repo root. |
src/utils/config.js |
New config load/save + repo-root resolution and planning horizon defaults. |
src/commands/wiki.js |
Wiki commands now operate repo-root relative, support nested paths, and add path safety checks. |
src/automation/lifecycle.js |
Reviewer precedence + knowledge-link merging and managed-PR context syncing. |
src/commands/epic.js / src/commands/sprint.js / src/commands/story.js |
Add --knowledge support and stricter required creation metadata; improve update flows. |
src/utils/metadata.js / src/utils/templates.js |
Add metadata list helpers and render Knowledge Links in issue templates. |
src/backends/github.js |
Safer label handling + add PR edit support for lifecycle syncing. |
test/cli.test.js |
Expanded tests for init/bootstrap, knowledge links, reviewer fallback, wiki path security, and label behavior. |
test/evals/eval.js + test/evals/** |
New eval harness and fixtures validating knowledge-index-first planning behavior. |
skills/git-tasks/SKILL.md |
Update shipped skill instructions for init/config/wiki-first knowledge workflow and lifecycle boundaries. |
README.md |
Update docs for init/wiki-first workflow and planning granularity (but Quick Reference needs further updates). |
package.json |
Add test:evals script. |
bin/git-tasks.js |
Register new init command. |
.gitattributes / .gitignore |
Enforce LF policy and ignore eval workspace artifacts. |
Comments suppressed due to low confidence (4)
src/commands/wiki.js:153
wiki showcurrently errors with "Wiki file not found" when the wiki directory hasn't been initialized, whereaswiki listprovides a clearer hint ("Run: git-tasks init"). Consider checking forwikiRootexistence early inshowand emitting the same initialization guidance for consistency and better UX.
.command('show <filename>')
.description('Show the content of a wiki file, including nested inbox/ or knowledge/ paths')
.action((filename) => {
try {
const filePath = resolveWikiFilePath(filename);
if (!existsSync(filePath)) {
printError(`Wiki file not found: ${filePath}`);
return;
}
README.md:86
- The Quick Reference for
git-tasks epic updateis missing newly supported flags (e.g.,--knowledgeand--add-blocker), so the README no longer matches the CLI surface area.
git-tasks epic create "Title" -d <desc> -p <points> --start <date> --end <date> [-k <wiki/knowledge/file.md>] [-a <user>]
git-tasks epic list [--state open|closed|all] [--short]
git-tasks epic show <number> [--comments]
git-tasks epic update <number> [--title <text>] [--points <n>] [--status open|closed]
**README.md:94**
* The Quick Reference for `git-tasks sprint update` appears outdated: the CLI now supports additional update options like `--epic`, `--points`, and `--knowledge`, but the README only lists `--title` and `--status`. Please update the documented command synopsis accordingly.
git-tasks sprint create "Title" -e -d -p --start --end [-k <wiki/knowledge/file.md>] [-a ]
git-tasks sprint list [--epic ] [--state open|closed|all] [--short]
git-tasks sprint show [--comments]
git-tasks sprint update [--title ] [--status open|closed]
README.md:102
- The Quick Reference for
git-tasks story updatedoesn't mention the new--knowledge/-koption, which can be important for the wiki-backed workflow described later in the README.
git-tasks story create "Title" -s <sprint> -e <epic> -d <desc> -p <points> --priority low|medium|high [-k <wiki/knowledge/file.md>] [-a <user>]
git-tasks story list [--sprint <n>] [--epic <n>] [--assignee <user>] [--state open|closed|all] [--short]
git-tasks story show <number> [--comments]
git-tasks story update <number> [--status open|in-progress|ready-for-review|closed] [--reviewer <user>]
</details>
---
💡 <a href="/Atena-IT/git-tasks/new/main?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
Summary
wiki/inbox/,wiki/knowledge/,wiki/knowledge/index.md, and issueKnowledge Linkstest/evals/, add repo line-ending policy, and keep published installs free of benchmark artifactsTest plan
npm testnpm run test:evalsnpm pack --dry-runuv run python <skill-creator>/eval-viewer/generate_review.py ... --static ...🤖 Generated with Claude Code