personal-assistant
Notes
Review 6
-
Review: Create goose-custom repo with symlink architecture (re-review)
review-1745-2026-07-03-v2Verdict: APPROVED
Re-review of board item #1745 after refinement. All 6 findings from the previous review (review-1745-2026-07-03) have been addressed.
Previous Findings Resolution
- [x] Removed profiles.yaml and permission.yaml from file targets -- Goose v1.27.2 only uses config.yaml
- [x] Secret management addressed -- config.yaml is Salt-managed, goose-custom tracks config.yaml.example (structure only, secrets redacted)
- [x] Skills claim corrected -- issue now correctly states Goose uses extensions configured in config.yaml, not claude-custom skills
- [x] AC #3 fixed -- now references GOOSE.md symlink, no profiles.yaml
- [x] Directory structure reconciled -- target structure matches Goose's actual config layout (config.yaml.example, GOOSE.md, recipes/, extensions/, docs/, salt/)
- [x] [SCOPE] arch-personal-assistant note created -- exists in pal-e-docs with correct stack description
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- Standalone, Sprint 2 planning
- [x] Repo -- ldraney/goose-custom (to be created)
- [x] User Story -- well-formed, matches groq-pivot story
- [x] Context -- detailed, includes Salt management strategy and Goose extension model
- [x] File Targets -- 5 files, all new in new repo, accurate to Goose config
- [x] Feature Flag -- none (appropriate for config repo scaffolding)
- [x] Acceptance Criteria -- 7 items, all agent-verifiable
- [x] Test Expectations -- 2 items (manual, appropriate for scaffolding)
- [x] Constraints -- 4 constraints, accurate to Goose's extension model
- [x] Checklist -- present
- [x] Related -- present, references dependencies
Traceability
- [x] story:groq-pivot label -- verified on project-personal-assistant user-stories section: "I can use Groq API as the primary inference backend for Goose"
- [x] story note verified -- groq-pivot entry exists in project-personal-assistant user-stories table
- [x] arch:personal-assistant label -- present on board item
- [x] arch note verified -- arch-personal-assistant note exists in pal-e-docs (Goose CLI + Groq API stack, Salt config, repos list)
- [x] Forgejo issue -- ldraney/personal-assistant#26, open
File Targets
- [x] README.md -- new file in new repo, setup guide and symlink instructions
- [x] .gitignore -- new file, excludes rendered configs with secrets
- [x] config.yaml.example -- template with structure shown, secrets redacted (not the live config)
- [x] GOOSE.md -- global context file, Goose equivalent of CLAUDE.md
- [x] docs/setup.md -- detailed setup guide with Salt integration notes
Repo Placement
OK. Issue filed on ldraney/personal-assistant (project repo) for creating ldraney/goose-custom (new repo). Correct pattern -- the target repo does not exist yet.
Dependencies
- depends:4 (issue #4, "Install Goose CLI") -- board item 1486 in done column. Satisfied.
- depends:5 (issue #5, "Configure Goose profile for Groq") -- board item 1487 in done column. Satisfied.
Both dependencies functionally complete.
Acceptance Criteria
- [x] AC 1: Forgejo repo created -- verifiable via API
- [x] AC 2: Directory structure scaffolded -- verifiable via ls
- [x] AC 3: GOOSE.md symlinked -- verifiable via readlink
- [x] AC 4: config.yaml.example documents structure -- verifiable via content check
- [x] AC 5: README documents pattern -- verifiable via content check
- [x] AC 6: .gitignore excludes secrets -- verifiable via content check
- [x] AC 7: Salt state reference documented -- verifiable via content check
7 AC, all agent-verifiable, all within one repo.
Blast Radius
Low. Creates a new standalone repo. No existing systems modified. Only interaction point is the GOOSE.md symlink into ~/.config/goose/.
Decomposition Assessment
5 file targets in 1 repo, 7 AC. All straightforward scaffolding. Estimated agent time well under 5 minutes. No decomposition needed.
Recommendation
No action needed. All previous findings resolved. Ticket is ready for implementation.
-
Review: Evaluate gpt-oss-120b on real agentic tasks via Goose + Groq
review-1742-2026-07-04Verdict: READY
Re-review of board item #1742 (Spike). Both issues from the prior review (
review-1742-2026-07-03) have been fixed. Scope is solid, traceability complete, fits in a single agent pass.Template Completeness
Template:
template-issue-spike- [x] Type — Spike
- [x] Lineage — Standalone, follows from Groq pivot
- [x] Repo —
ldraney/personal-assistant - [x] Question — 7 sub-questions covering file edits, MCP tool use, multi-step workflows, code review, reasoning, coverage %, and model comparison
- [x] Deliverables — 2 items: docs/model-evaluation.md and follow-up tickets
- [x] Time-box — 1 session (2-3 hours)
- [x] Related — project and dependency on #6
Traceability
- [x] story:groq-pivot label — present on board item
- [x] story note verified — found in project-personal-assistant user-stories section (describes Groq API as primary inference backend for Goose)
- [x] arch:personal-assistant label — present on board item
- [x] arch note verified — arch-personal-assistant note exists in pal-e-docs (covers Goose CLI + Groq stack, key decisions, repos)
- [x] Forgejo issue — ldraney/personal-assistant#23, state: open
File Targets
Spike type — deliverable creates
docs/model-evaluation.md(does not yet exist, as expected). Thedocs/directory exists in the repo with 6 existing files. No existing file targets to verify.Repo Placement
OK — issue filed on
ldraney/personal-assistant, repo field matches. Single-repo spike.Dependencies
depends:6— Issue #6 "Adapt core system prompts for Goose" (board item #1488, currently intodocolumn). Documented in issue body: "Should run after #6 (system prompts affect evaluation quality)". Dependency is consistent between board labels and issue text.
Acceptance Criteria
Deliverables (spike equivalent of AC):
docs/model-evaluation.mdwith pass/partial/fail results per test category, overall score, and recommendation — verifiable by file existence and content check- Follow-up tickets created for integration gaps — verifiable by querying Forgejo
Both are concrete and agent-verifiable.
Blast Radius
Minimal — spike produces documentation and follow-up tickets only. No code changes, no downstream consumers affected. Results will inform model selection for downstream issues (#14, #16, #17 which depend on sprint 3-4 work).
Decomposition Assessment
No decomposition needed:
- 1 file target, 1 repo — well under 3-file/2-repo threshold
- 2 deliverables — under 5 AC threshold
- Time-boxed to 1 session — self-limiting by design
Recommendation
No action needed. Ready to move to
todoonce dependency #6 is complete.Prior Review Issues (Resolved)
- groq-pivot user story — now present in project-personal-assistant user-stories section
- arch-personal-assistant note — now exists in pal-e-docs with stack, key decisions, and repos documented
-
Review: Adapt core system prompts for Goose (re-review)
review-1488-2026-07-03-v2Verdict: APPROVED
Re-review of board item #1488. Three issues from prior review (
review-1488-2026-07-03) have all been resolved.Prior Issues -- Resolution
- [x]
[LABEL]Addstory:groq-pivotlabel -- FIXED. Label now present on board item. - [x]
[SCOPE]Createarch-personal-assistantnote -- FIXED. Note created with architecture tag, documents Goose + Groq stack, key decisions, and repo layout. - [x]
[BODY]Clarify prompt loading mechanism -- FIXED. Issue body now specifiestomextension withGOOSE_MOIM_MESSAGE_FILEenv var. Addedscripts/assemble-prompt.shandsalt/states/goose/files/config.yaml(in pal-e-platform) to file targets.
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- references #3 and #5
- [x] Repo -- ldraney/personal-assistant
- [x] User Story -- as a developer, want Goose loaded with adapted Claude Code prompts
- [x] Context -- explains architecture spike, source material, prompt categorization, and tom extension loading mechanism
- [x] File Targets -- 7 files (5 prompts + assemble script + Salt config)
- [x] Feature Flag -- None (appropriate for internal tooling)
- [x] Acceptance Criteria -- 6 criteria
- [x] Test Expectations -- 3 expectations
- [x] Constraints -- 3 constraints
- [x] Checklist -- 4 items (updated to include Salt template)
- [x] Related -- references project and dependencies
Traceability
- [x] story:groq-pivot label -- present on board item
- [x] story note verified -- project-personal-assistant user-stories section has "I can use a Claude Code-like agentic coding experience powered by open-source models" with success metric referencing Goose. Aligns with groq-pivot story.
- [x] arch:personal-assistant label -- present on board item
- [x] arch note verified --
arch-personal-assistantnote exists in pal-e-docs (created 2026-07-04). Documents Goose CLI + Groq API stack, key decisions, repo layout. - [x] Forgejo issue -- ldraney/personal-assistant#6, open
File Targets
- [x]
system-prompts/task-execution.md-- NEW file (directory does not exist yet, expected for feature) - [x]
system-prompts/safety.md-- NEW file - [x]
system-prompts/code-style.md-- NEW file - [x]
system-prompts/tone.md-- NEW file - [x]
system-prompts/platform-context.md-- NEW file - [x]
scripts/assemble-prompt.sh-- NEW file (concatenates prompt files into single assembled prompt) - [x]
salt/states/goose/files/config.yamlin pal-e-platform -- NEW file (cross-repo, explicitly noted in issue body). Salt states dir exists atsalt/states/in pal-e-platform;goose/subdirectory to be created.
Repo Placement
Issue filed on
ldraney/personal-assistant, which is correct for the 6 primary file targets. One file target (salt/states/goose/files/config.yaml) is inldraney/pal-e-platform-- explicitly acknowledged in the issue body. The Salt change is a single config update (settingGOOSE_MOIM_MESSAGE_FILEenv var) and does not warrant a separate Forgejo issue. The arch note confirms Salt config lives in pal-e-platform. Acceptable.Dependencies
- depends:3 -- "Spike: Investigate Goose config format and claude-custom compatibility" -- board item #1485, column: done. Satisfied.
- depends:5 -- "Configure Goose profile for Groq + Kimi K2 backend" -- board item #1487, column: done. Satisfied. (Forgejo issues still open -- cleanup item, not blocking.)
- Downstream: No items on the board have
depends:6in their labels. Sprint:3-4 items depend on other issues, not directly on #6.
Both upstream dependencies satisfied. No blockers.
Acceptance Criteria
- [x] AC1: "System prompt files created in system-prompts/" -- verifiable via file existence
- [x] AC2: "scripts/assemble-prompt.sh assembles prompt files into a single file" -- verifiable by running script
- [x] AC3: "Goose loads assembled prompt at startup via tom extension (GOOSE_MOIM_MESSAGE_FILE)" -- verifiable by checking env var and Goose startup
- [x] AC4: "Goose follows tone guidelines" -- subjective, covered by Test Expectations (side-by-side comparison)
- [x] AC5: "Goose uses tools appropriately" -- subjective, covered by Test Expectations
- [x] AC6: "Goose shows safety awareness" -- subjective, covered by Test Expectations
All criteria are testable. ACs 4-6 are behavioral and require human judgment, which is inherent for system prompt work.
Blast Radius
Minimal. All primary file targets are new files in new directories. The Salt template creates a new state (
goose/) alongside existing states. No existing code or configuration is modified. Prompt content will affect Goose behavior system-wide once loaded, which is the intended effect.Decomposition Assessment
- 7 file targets across 2 repos -- exceeds file count threshold (>3) but only 2 repos (not >2)
- 6 acceptance criteria -- technically exceeds >5 threshold
- However: ACs 4-6 are behavioral verification criteria, not implementation steps. They cannot be meaningfully decomposed into sub-tickets. Actual implementation work is: 5 independent prompt files + 1 assembly script + 1 config line.
- Estimated agent work: read source material, create 5 prompt files (parallel), write assembly script, update Salt config. Feasible in a single pass if agent has local access to claude-code-reference/.
- No decomposition needed. Borderline on AC count, but behavioral ACs are verification, not implementation.
Recommendation
No action needed. All prior review issues resolved. Scope is solid.
Minor observations (non-blocking):
- The
arch-personal-assistantnote is not associated with thepersonal-assistantproject in pal-e-docs (project field is null). Consider linking it. - Forgejo issues #3 and #5 are still open despite board items being in "done". Consider closing them.
- [x]
-
Review: Create goose-custom repo with symlink architecture
review-1745-2026-07-03Verdict: 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.
-
Review: Evaluate gpt-oss-120b on real agentic tasks via Goose + Groq
review-1742-2026-07-03Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type — Spike
- [x] Lineage — "Standalone — follows from Groq pivot"
- [x] Repo —
ldraney/personal-assistant - [x] Question — well-structured with 7 sub-questions covering file edits, MCP tool use, multi-step workflows, code review, reasoning tasks, coverage percentage, and model comparison
- [x] Deliverables —
docs/model-evaluation.md+ follow-up tickets - [x] Time-box — 1 session (2-3 hours)
- [x] Related — project reference and dependency on #6
All required spike template sections present. Extra
### Notesection documents model name change from Kimi K2 to gpt-oss-120b (acceptable context).Traceability
- [x] story:groq-pivot label — present on board item
- [ ] story note MISSING — [SCOPE] The user-stories section of
project-personal-assistanthas four generic stories (developer, operator, business owner) but none are identified as "groq-pivot". The Groq pivot represents a strategic shift from local Ollama inference to Groq cloud API. Create a user story entry for the groq-pivot story onproject-personal-assistantuser-stories section. - [x] arch:personal-assistant label — present on board item
- [ ] arch note MISSING — [SCOPE] No
arch-personal-assistantnote found in pal-e-docs. The project page (project-personal-assistant) has an architecture section with Mermaid diagram, three-layer breakdown, and cost model, which may suffice. Create architecture notearch-personal-assistantor confirm the project page architecture section covers this role. - [x] Forgejo issue — ldraney/personal-assistant#23, open
File Targets
- [x]
docs/model-evaluation.md— deliverable to be created (does not exist yet, expected for spike). Thedocs/directory exists with 6 existing files (anatomy.md, architecture.md, deployment-pipeline.md, mcp-integration.md, model-serving.md, prompt-engineering.md). Target path is valid.
Repo Placement
OK. Issue filed on
ldraney/personal-assistant, work targets the same repo. Single-repo scope. No mismatch.Dependencies
- [ ] [LABEL] Issue body states "Should run after #6 (system prompts affect evaluation quality)" but board item #1742 has no
depends:6label. Issue #6 ("Adapt core system prompts for Goose") is still open and in backlog (board item #1488). Adddepends:6label to track this dependency. - Board item #1488 (issue #6) itself depends on #3 and #5 (both done), so its own blockers are cleared.
- Other groq-pivot story items in backlog: #1745 (issue #26, sprint:2), #1746 (issue #27, sprint:3), #1743 (issue #24, sprint:3). No circular dependencies detected.
Acceptance Criteria
Deliverables are verifiable by an agent:
docs/model-evaluation.md— agent can verify file exists and contains pass/partial/fail results, overall score, and recommendation- Follow-up tickets — agent can verify new Forgejo issues created and linked
The question sub-bullets (simple file edits, MCP tool use, multi-step workflows, code review, reasoning tasks) provide clear test categories. The "compare with qwen/qwen3-32b and llama-3.3-70b-versatile if time permits" is appropriately scoped as optional.
Blast Radius
Low. This is a spike (investigation only, no code changes to production systems). The evaluation results will inform model selection for the broader personal-assistant project. No downstream consumers affected. No existing code patterns at risk.
Decomposition Assessment
- File targets: 1 (
docs/model-evaluation.md) - Repos: 1
- Deliverables: 2
- Time-box: 1 session (2-3 hours, inherently interactive)
No decomposition needed. Single-file output, time-boxed, single repo. Well within the 5-minute rule for agent work (the spike itself is manual/interactive evaluation, not automatable).
Recommendation
[LABEL]Adddepends:6to board item #1742 labels — issue body documents dependency on #6 but board item does not track it[SCOPE]Create "groq-pivot" user story entry inproject-personal-assistantuser-stories section describing the strategic shift to Groq cloud API[SCOPE]Create architecture notearch-personal-assistantor explicitly confirm the project page architecture section fulfills that role
-
Review: Adapt core system prompts for Goose
review-1488-2026-07-03Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type — Feature
- [x] Lineage — references #3 and #5
- [x] Repo — ldraney/personal-assistant
- [x] User Story — as a developer, want Goose loaded with adapted prompts
- [x] Context — good background on the architecture spike, source material, and categorization
- [x] File Targets — 5 files in system-prompts/
- [x] Feature Flag — None (appropriate for internal tooling)
- [x] Acceptance Criteria — 5 criteria
- [x] Test Expectations — 3 expectations
- [x] Constraints — 3 constraints
- [x] Checklist — 3 items
- [x] Related — references project and dependencies
Traceability
- [ ] story:X label — MISSING. No story label on board item. The issue's user story aligns with project-personal-assistant user story #1 ("Claude Code-like agentic coding experience"). Other sprint:2 items (e.g., #1745) use
story:groq-pivot. [LABEL] Addstory:groq-pivotlabel. - [x] arch:personal-assistant label — present on board item
- [ ] arch note MISSING — searched pal-e-docs for
arch-personal-assistantand variants; no matching architecture note exists. The project page has an architecture section, but no dedicated arch note. [SCOPE] Create architecture notearch-personal-assistantfor the personal-assistant component. - [x] Forgejo issue — https://forgejo.tail5b443a.ts.net/ldraney/personal-assistant/issues/6, open
File Targets
- [x]
system-prompts/task-execution.md— NEW file (directory does not exist yet, expected) - [x]
system-prompts/safety.md— NEW file - [x]
system-prompts/code-style.md— NEW file - [x]
system-prompts/tone.md— NEW file - [x]
system-prompts/platform-context.md— NEW file - [x]
docs/prompt-engineering.md— verified exists in repo, contains keep/adapt/drop categorization as claimed - [x]
claude-code-reference/— gitignored, local-only source material (acceptable per constraints)
Repo Placement
OK. Issue filed on
ldraney/personal-assistant,### Reposection saysldraney/personal-assistant. All file targets are within this repo. No cross-repo work needed.Dependencies
- depends:3 — "Design Goose + Groq architecture" (spike) — board item 1485, column: done
- depends:5 — "Configure Goose profile for Groq + Kimi K2 backend" — board item 1487, column: done (note: Forgejo issue still open, but board shows done)
- Downstream dependents: Issues #13 (delegation protocol spike), #16 (kanban workflows), #17 (PR lifecycle) all depend on #6. These are sprint:3-4 items, appropriately sequenced.
Both upstream dependencies are satisfied. No blockers.
Acceptance Criteria
- [x] AC1: "System prompt files created in system-prompts/" — verifiable via file existence check
- [ ] AC2: "Goose loads assembled prompt at startup" — UNDERDEFINED. Does not specify the mechanism. Issue #5 shows Goose config is managed via Salt template at
salt://goose/files/config.yaml, but no mention of system prompt loading path. Options: Goose profileinstructionsfield,.goosehintsfile, CLI--instructionsflag, or Salt template update. [BODY] Specify prompt loading mechanism in AC2 — e.g., "Goose profileinstructionsfield references assembled prompt" or "system-prompts assembled into .goosehints". - [x] AC3: "Goose follows tone guidelines" — subjective but covered by Test Expectations (side-by-side comparison)
- [x] AC4: "Goose uses tools appropriately" — subjective but covered by Test Expectations
- [x] AC5: "Goose shows safety awareness" — subjective but covered by Test Expectations
Blast Radius
Minimal. All file targets are new files in a new directory. No existing code is modified. The prompts will affect Goose behavior system-wide once loaded, but that is the intended effect. No sibling services impacted.
Decomposition Assessment
- 5 file targets across 1 repo — under threshold
- 5 acceptance criteria — at threshold but not over
- Estimated agent work: read docs/prompt-engineering.md categorization, read claude-code-reference/ source material, synthesize 5 prompt files, configure loading mechanism. Feasible in a single agent pass if agent has local access to claude-code-reference/.
- No decomposition needed.
Recommendation
[LABEL]Addstory:groq-pivotlabel to board item — this work is part of the Groq/Goose pivot story, consistent with other sprint:2 items.[SCOPE]Create architecture notearch-personal-assistantin pal-e-docs — thearch:personal-assistantlabel has no backing note.[BODY]Clarify AC2 — specify how Goose loads the assembled prompt at startup (profile instructions field, .goosehints, CLI flag, or Salt template update to config.yaml).
Project Page 1
-
Project: personal-assistant
project-personal-assistantpersonal-assistant
Vision
Self-hosted AI coding agent that replicates Claude Code behavior using open-source models, fully owned and controlled. Goose CLI + Groq API (openai/gpt-oss-120b) + adapted system prompts from the Claude Code leak, with local Ollama fallback for offline use. MCP-connected to the full pal-e-platform stack. Configuration managed by SaltStack.
Operating thesis: The value of Claude Code is 80% prompt engineering and 20% model quality. The leaked prompts (515 fragments from Piebald-AI + Opus 4.6 system prompt) provide the behavioral blueprint. Goose provides the harness. Groq API provides fast inference on open-weight models (gpt-oss-120b, 120B params) at low cost. The result: fast inference for automations and delegation at API pricing, with Claude Code retained for complex agentic work.
Long-term play: As open-source coding models improve (Qwen4, DeepSeek V5), the same infrastructure scales up. The prompt engineering and platform integration are the durable investment. The model and inference provider are swappable components — if Groq disappears, download weights and self-host.
User Stories
Story Role Description Success Metric core-agent Developer (Lucas) I can use a Claude Code-like agentic coding experience powered by open-source models, with full MCP access to my platform. Goose + gpt-oss-120b completes structured coding tasks (PR creation, code review, file editing) with acceptable quality. groq-pivot Developer (Lucas) I can use Groq API as the primary inference backend for Goose, with fast response times and no GPU infrastructure to manage. Goose + Groq API (gpt-oss-120b) handles agentic tasks with acceptable latency. Salt-managed credentials. Fallback to Ollama for offline use. offline-fallback Developer (Lucas) I can switch to local Ollama inference when offline or when Groq is unavailable, without changing my workflow. Profile switching is seamless. Local model selected and tested (#24). platform-automation Platform Operator (Lucas) I can run automated platform tasks (PR reviews, CI monitoring, doc updates) without consuming Claude API credits. Automated tasks run on Groq API at predictable cost. customer-ai Business Owner (Lucas) I can offer AI-powered features to customers (chat-with-docs, guided workflows) using my own infrastructure. Customer-facing AI features run on owned infrastructure with predictable costs. Architecture
System Overview
graph TB subgraph operator["Operator Workstation (archbox)"] GOOSE["Goose CLI\nAgentic coding interface"] OLLAMA["Ollama\nLocal fallback model TBD\nCPU inference, always-on"] PROMPTS["System Prompts\nVersion-controlled\nAdapted from Claude Code leak"] SALT["SaltStack\nManages config.yaml\nPillar-injected secrets"] end subgraph groq["Groq API (cloud)"] GROQAPI["Groq Inference\nopenai/gpt-oss-120b\nOpenAI-compatible API"] end subgraph platform["pal-e-platform (archbox k3s)"] MCP["MCP Servers\npal-e-docs · Forgejo · Woodpecker\nGmail · Sheets · Notion"] end GOOSE -->|"primary inference"| GROQAPI GOOSE -->|"offline fallback"| OLLAMA GOOSE -->|"MCP protocol"| MCP GOOSE -->|"loads"| PROMPTS SALT -->|"renders config"| GOOSEThree Layers (Replacing Claude Code)
Layer Claude Code personal-assistant Model (brain) Claude Opus/Sonnet via API gpt-oss-120b via Groq API (primary), local Ollama (fallback) Prompts (behavior) 515 internal prompt fragments Adapted versions, version-controlled Interface (harness) Proprietary TypeScript/React/Ink CLI Goose (open-source Rust CLI by Block) Cost Model
Option Monthly Cost Speed Groq API (gpt-oss-120b) Usage-based (currently free tier) Fast cloud inference Local only (Ollama CPU) $0 ~15-25 tok/s Plan
5 sprints on
board-personal-assistant. Sprint 1 complete (infrastructure + Groq pivot). Sprint 2 in progress (system prompts, model evaluation, goose-custom repo).Board
board-personal-assistant— Personal Assistant Board. Continuous kanban.Status
- Sprint 1 COMPLETE (2026-07-04) — Groq credentials, Goose config, Salt IaC, docs updated
- Sprint 2 in progress — #6 (system prompts), #23 (model evaluation), #26 (goose-custom repo)
- Forgejo repo: ldraney/personal-assistant
- Salt state:
pal-e-platform/salt/states/goose/manages config.yaml with pillar-injected secrets - Groq API key stored at
~/secrets/groq/api_key, GPG-encrypted in Salt pillar
Milestones
Date Milestone Impact 2026-06-17 Project bootstrapped Forgejo repo, architecture docs, project page, board created. Research complete on model selection, GPU pricing, Goose capabilities. 2026-07-04 Sprint 1 complete — Groq pivot Kimi K2 deprecated on Groq → pivoted to gpt-oss-120b. Groq credentials stored, Goose configured with Salt IaC, all docs updated. MCP servers connected (Forgejo, pal-e-docs). Repos
Repo Platform Role Status personal-assistant Forgejo Architecture docs, system prompts, evaluation results active goose-custom (planned) Forgejo Goose config, GOOSE.md, recipes — mirrors claude-custom pattern planned (#26) Infrastructure
Component Details Primary Inference Groq API — openai/gpt-oss-120b, OpenAI-compatible endpoint Local Fallback Ollama on archbox (host process) — model TBD (#24), CPU inference via 128GB RAM Agent Harness Goose CLI v1.27.2 (open-source by Block, Rust, Apache 2.0) — MCP support, OpenAI-compat backend System Prompts Adapted from Claude Code leak (Piebald 515 fragments + Opus 4.6), version-controlled MCP Servers Connected: pal-e-docs, Forgejo. Available: Woodpecker, Gmail, Sheets, Notion, GroupMe Config Management SaltStack — salt/states/goose/renders config.yaml with pillar-injected secretsSecrets GPG-encrypted Salt pillar: groq_api_key, forgejo_token, paldocs_api_key
Board 1
-
Personal Assistant Board
board-personal-assistantNo content