Review: Create goose-custom repo with symlink architecture
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- present
- [x] Repo -- ldraney/goose-custom (to be created)
- [x] User Story -- present, well-formed
- [x] Context -- present, detailed background
- [x] File Targets -- present (but has accuracy issues, see below)
- [x] Feature Flag -- none (appropriate for config repo scaffolding)
- [x] Acceptance Criteria -- 6 items
- [x] Test Expectations -- 2 items (manual, appropriate for scaffolding)
- [x] Constraints -- present
- [x] Checklist -- present
- [x] Related -- present
Traceability
- [x] story:groq-pivot label -- thematically aligns with "agentic coding experience powered by open-source models" user story on project page
- [x] story note verified -- user-stories section exists on project-personal-assistant with relevant stories
- [x] arch:personal-assistant label -- present on board item
- [ ] arch note MISSING -- [SCOPE] Create architecture note arch-personal-assistant for component personal-assistant. Search returned no results.
- [x] Forgejo issue -- ldraney/personal-assistant#26, open
File Targets
- [x] README.md -- valid, new file in new repo
- [x] .gitignore -- valid, new file in new repo
- [x] config.yaml -- valid, Goose uses ~/.config/goose/config.yaml (confirmed via goose info)
- [ ] profiles.yaml -- ISSUE: Goose v1.27.2 does NOT use profiles.yaml. Only config.yaml exists in ~/.config/goose/. No evidence of a profiles feature.
- [ ] permission.yaml -- ISSUE: Goose v1.27.2 does NOT use permission.yaml. No such file exists or is referenced by Goose.
- [x] GOOSE.md -- valid as global context file (analogous to CLAUDE.md)
- [x] docs/setup.md -- valid, new file in new repo
Additional concern: The existing ~/.config/goose/config.yaml contains plaintext secrets (FORGEJO_TOKEN, PALDOCS_API_KEY). Symlinking this from a git repo would commit secrets to version control. The issue does not address secret management.
Repo Placement
Acceptable. Issue is filed on ldraney/personal-assistant (the project repo) but creates ldraney/goose-custom (a new repo). This is the correct project-level tracking pattern -- the new repo doesn't exist yet to host its own issues. The Forgejo repo ldraney/goose-custom does not yet exist (confirmed via API).
Dependencies
- depends:4 -- "Install Goose CLI and configure Groq API key on archbox" -- Forgejo state: OPEN, board item 1486: done column. Goose IS installed at /home/ldraney/.local/bin/goose v1.27.2. Work is complete but issue not closed.
- depends:5 -- "Configure Goose profile for Groq + Kimi K2 backend" -- Forgejo state: OPEN, board item 1487: done column. Config shows GOOSE_PROVIDER: groq with model openai/gpt-oss-120b. Work is complete but issue not closed.
Dependencies are functionally satisfied (work done, board items in done column), but Forgejo issues remain open -- minor housekeeping gap.
Acceptance Criteria
- AC 1 (Forgejo repo created) -- verifiable by agent
- AC 2 (directory structure scaffolded) -- verifiable by agent
- AC 3 (symlinks for config.yaml, profiles.yaml) -- INVALID: profiles.yaml does not exist in Goose. Fix to reference only config.yaml and GOOSE.md.
- AC 4 (skills directory shared) -- claims "Goose reads .claude/skills/ natively" but goose info shows only config.yaml as config. Needs verification or correction.
- AC 5 (README documents pattern) -- verifiable by agent
- AC 6 (.gitignore mirrors claude-custom) -- verifiable by agent
6 AC, but all within one repo and straightforward scaffolding. No decomposition needed despite hitting the >5 threshold.
Blast Radius
Low blast radius. This creates a new standalone repo. No existing systems are modified. The only interaction point is the shared skills directory between claude-custom and goose-custom, and the symlinks into ~/.config/goose/ (which currently has only config.yaml and backups). The existing config.yaml would be replaced by a symlink -- ensure backup strategy is documented.
Decomposition Assessment
7 file targets in 1 repo, 6 AC, estimated agent time under 5 minutes. All files are simple scaffolding (config templates, README, .gitignore). No decomposition needed despite 6 AC -- each is trivial.
Recommendation
- [BODY] Remove profiles.yaml and permission.yaml from file targets and directory structure -- Goose v1.27.2 uses only config.yaml. Replace target structure with actual Goose config files.
- [BODY] Add secret management strategy to Context section -- existing config.yaml contains plaintext API tokens (FORGEJO_TOKEN, PALDOCS_API_KEY). Options: (a) template config.yaml with env var references, (b) use a .env file excluded from git, (c) keep secrets-bearing config out of the repo and only track structure.
- [BODY] Verify or correct the claim "Goose reads .claude/skills/ natively" -- goose info only shows config.yaml as config path. If skills sharing requires a different mechanism, update the issue.
- [BODY] Fix AC #3: remove profiles.yaml reference from symlink acceptance criterion.
- [BODY] Reconcile target structure with file targets -- the structure shows recipes/ and extensions/ directories but file targets don't scaffold them.
- [SCOPE] Create architecture note arch-personal-assistant for the personal-assistant component.