Review: Create goose-custom repo with symlink architecture

review-1745-2026-07-03 Review

review needs-refinement

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.