Claude
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: build
|
||||
description: Build agent. Executes an implementation plan with full tooling. Parallelizes independent tasks and writes to the project it lives in.
|
||||
model: sonnet
|
||||
tools: Read, Write, Edit, Grep, Glob, Bash, Task, WebFetch, WebSearch
|
||||
---
|
||||
|
||||
You are the Build agent and the primary orchestrator (Sonnet).
|
||||
|
||||
Execution model:
|
||||
1. Take the task list and identify independent tasks.
|
||||
2. Dispatch independent tasks in parallel using the Task tool.
|
||||
3. Route low-complexity, mechanical, or high-volume subtasks (boilerplate,
|
||||
simple edits, file scans, test scaffolding) to Haiku subagents for
|
||||
efficiency. Handle complex, cross-cutting orchestration yourself.
|
||||
4. Serialize only where there is a real dependency.
|
||||
|
||||
Scope:
|
||||
- Full read/write access, limited to the project this agent lives in.
|
||||
- Do not modify files outside the project root.
|
||||
- Verify your work (build/lint/tests) before reporting done.
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: plan
|
||||
description: Planning agent. Explores the codebase and produces an implementation plan without writing code. Use PROACTIVELY for any non-trivial task before building.
|
||||
model: opusplan
|
||||
tools: Read, Grep, Glob, Task, WebFetch, WebSearch
|
||||
---
|
||||
|
||||
You are the Plan agent. Your job is to understand the task and produce a
|
||||
clear, ordered implementation plan. You DO NOT modify files.
|
||||
|
||||
Workflow:
|
||||
1. Delegate cheap, high-volume exploration (file discovery, reading,
|
||||
grepping, summarizing) to Haiku subagents via the Task tool.
|
||||
2. Reserve your own reasoning for synthesis and plan design (opusplan).
|
||||
3. Output a concrete, ordered task list with explicit file paths, the
|
||||
change required in each, and where work can run in parallel.
|
||||
|
||||
Constraints:
|
||||
- Never edit, create, or delete files.
|
||||
- Never run mutating shell commands.
|
||||
- End every response with a numbered task list ready to hand to the Build agent.
|
||||
+17
-1
@@ -1,8 +1,21 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.overlays = [ inputs.nix-vscode-extensions.overlays.default ];
|
||||
nixpkgs.overlays = [
|
||||
inputs.nix-vscode-extensions.overlays.default
|
||||
# ==== Temp workaround for VSCODE
|
||||
## https://github.com/nixos/nixpkgs/issues/543690 as of 2026-07-20
|
||||
(final: prev: {
|
||||
vscode = prev.vscode.overrideAttrs (oldAttrs: {
|
||||
postPatch = builtins.replaceStrings
|
||||
[ "Contents/Resources/app/node_modules/@vscode/ripgrep-universal" ]
|
||||
[ "Contents/Resources/app/node_modules.asar.unpacked/@vscode/ripgrep-universal" ]
|
||||
(oldAttrs.postPatch or "");
|
||||
});
|
||||
})
|
||||
];
|
||||
ids.gids.nixbld = 350;
|
||||
security.pam.services.sudo_local.touchIdAuth = true;
|
||||
|
||||
# 1Password SSH Socket
|
||||
environment.variables.SSH_AUTH_SOCK = "~/Library/Group Containers/2BU8OCWD5C.com.1password/t/agent.sock";
|
||||
|
||||
@@ -63,7 +76,10 @@
|
||||
|
||||
"1password-cli"
|
||||
"bruno"
|
||||
"claude"
|
||||
"claude-code"
|
||||
"docker-desktop"
|
||||
"super-productivity"
|
||||
"kopiaui"
|
||||
"libreoffice"
|
||||
"obsidian"
|
||||
|
||||
+7
-2
@@ -38,6 +38,7 @@ in
|
||||
## Tooling
|
||||
fd
|
||||
granted
|
||||
ttyd
|
||||
] ++ [
|
||||
oldPkgs.nodejs_22
|
||||
oldPkgs.yarn
|
||||
@@ -59,9 +60,8 @@ in
|
||||
bbenoist.nix
|
||||
eamodio.gitlens
|
||||
graphql.vscode-graphql-syntax
|
||||
graphql.vscode-graphql
|
||||
hashicorp.terraform
|
||||
mechatroner.rainbow-csv
|
||||
mermaidchart.vscode-mermaid-chart
|
||||
ms-python.debugpy
|
||||
ms-python.python
|
||||
ms-python.vscode-pylance
|
||||
@@ -96,6 +96,7 @@ in
|
||||
];
|
||||
|
||||
initContent = ''
|
||||
export JIRA_API_TOKEN=$(security find-generic-password -a "$USER" -s "jira-token" -w 2>/dev/null)
|
||||
export SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock
|
||||
|
||||
# Auto-allow direnv for directories with flake.nix
|
||||
@@ -126,6 +127,7 @@ in
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
CLAUDE_CONFIG_DIR = "${config.home.homeDirectory}/.config/claude";
|
||||
# Points to the Homebrew location mentioned in your caveat
|
||||
JAVA_HOME = "/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home";
|
||||
NPM_CONFIG_PREFIX = "${config.home.homeDirectory}/.npm-global";
|
||||
@@ -149,6 +151,9 @@ in
|
||||
home.file."android-sdk/platform-tools/adb".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/adb";
|
||||
home.file."android-sdk/cmdline-tools/latest/bin/sdkmanager".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/sdkmanager";
|
||||
xdg.configFile."opencode/opencode.jsonc".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.opencode.jsonc";
|
||||
xdg.configFile."claude/settings.json".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.claude.json";
|
||||
xdg.configFile."claude/agents/plan.md".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/claude.agents.plan.md";
|
||||
xdg.configFile."claude/agents/build.md".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/claude.agents.build.md";
|
||||
|
||||
programs.tmux.enable = true;
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
||||
"theme": "dark",
|
||||
"agent": "plan"
|
||||
}
|
||||
+29
-21
@@ -2,38 +2,42 @@
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "github-copilot/claude-sonnet-4.6",
|
||||
"instructions": [],
|
||||
"plugin": ["opencode-copilot-1m"],
|
||||
"provider": {},
|
||||
"lsp": true,
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/Projects/**": "allow",
|
||||
"/tmp": "allow"
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"plan": {
|
||||
"mode": "primary",
|
||||
"model": "github-copilot/claude-sonnet-4.6",
|
||||
"prompt": "You are OpenCode's architect. When given a problem, analyze the codebase and write out a strict step-by-step master plan. Once approved, use the 'todo' tool to track tasks and delegate implementation details to the general subagents using @general.",
|
||||
"permission": {
|
||||
"edit": "deny",
|
||||
"bash": "deny",
|
||||
"subagent": "allow"
|
||||
}
|
||||
"model": "github-copilot/claude-opus-4.8-1m",
|
||||
"prompt": "Architect agent. Analyzes codebase and outputs a hyper-specific, step-by-step technical blueprint into .opencode_blueprint.md. Does NOT write feature code.",
|
||||
"permission": { "edit": "allow", "bash": "allow" }
|
||||
},
|
||||
"execute": {
|
||||
"model": "github-copilot/claude-sonnet-4.6-1m",
|
||||
"temperature": 0.2,
|
||||
"prompt": "Orchestrator agent. Reads .opencode_blueprint.md, breaks tasks into micro-steps, and delegates individual file edits/terminal tasks to subagents. Your primary job is delegation and verification.",
|
||||
"permission": { "edit": "allow", "bash": "allow" }
|
||||
},
|
||||
"build": {
|
||||
"mode": "primary",
|
||||
"model": "github-copilot/claude-sonnet-4.6",
|
||||
"permission": {
|
||||
"edit": "allow",
|
||||
"bash": "allow"
|
||||
}
|
||||
},
|
||||
"explore": {
|
||||
"model": "github-copilot/claude-haiku-4.5"
|
||||
"model": "github-copilot/claude-sonnet-4.6-1m",
|
||||
"temperature": 0.2,
|
||||
"permission": { "edit": "allow", "bash": "allow" }
|
||||
},
|
||||
"general": {
|
||||
"mode": "subagent",
|
||||
"model": "github-copilot/claude-haiku-4.5",
|
||||
"description": "A fresh-context, general-purpose agent for executing individual units of multi-step tasks.",
|
||||
"permission": {
|
||||
"edit": "allow",
|
||||
"bash": "allow"
|
||||
}
|
||||
"temperature": 0.1,
|
||||
"prompt": "Execution subagent. Takes a single, isolated task and explicit file paths provided by the Build orchestrator. Do not blind-search; rely strictly on paths given.",
|
||||
"permission": { "edit": "allow", "bash": "allow" }
|
||||
},
|
||||
"explore": {
|
||||
"model": "github-copilot/claude-haiku-4.5"
|
||||
}
|
||||
},
|
||||
"autoupdate": false,
|
||||
@@ -44,6 +48,10 @@
|
||||
"figma": {
|
||||
"type": "remote",
|
||||
"url": "http://127.0.0.1:3845/mcp"
|
||||
},
|
||||
"ios-simulator": {
|
||||
"type": "local",
|
||||
"command": ["npx", "-y", "ios-simulator-mcp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+43
-44
@@ -8,11 +8,11 @@
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766810506,
|
||||
"narHash": "sha256-I4BxozsEu205tA7jazufztI8ZQ5p7hcCnjqrSKPz9nI=",
|
||||
"lastModified": 1782994178,
|
||||
"narHash": "sha256-VGc3/2fe6hnOmNSLlOygEAbeS69v7A7rjKDKRzAgE2Q=",
|
||||
"owner": "hraban",
|
||||
"repo": "cl-nix-lite",
|
||||
"rev": "038e341cede255a83a8f04af114dc95717461d32",
|
||||
"rev": "eb584721e5e799bafe0c6210a8a1a398f90e8ac0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -28,11 +28,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779036909,
|
||||
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=",
|
||||
"lastModified": 1784500460,
|
||||
"narHash": "sha256-UvORnAxTRHax7RG74W8Z2t4GvIkX6AjJ5kk0QlwZomo=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "56c666e108467d87d13508936aade6d567f2a501",
|
||||
"rev": "57a3171f94705599a2499248ca5758d5eb47c0e0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -45,11 +45,11 @@
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1730663653,
|
||||
"narHash": "sha256-kFCUWettiFHDIqxCWWQ9qY8pVh+Lj+XL0Giyy/kdomg=",
|
||||
"lastModified": 1766808011,
|
||||
"narHash": "sha256-s83BS0abtIj7vzUf8JE0209KphfHA6qRw/92D9k/F+0=",
|
||||
"owner": "hraban",
|
||||
"repo": "flake-compat",
|
||||
"rev": "e5b16676185cb7548581c852f51ce7f3a49bba5e",
|
||||
"rev": "6e0aafdc4c4c2043c66f756d5045374b42184fc5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -120,16 +120,15 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781981105,
|
||||
"narHash": "sha256-/1nNBbA7PrSQpTc9Qazkhl4kIPg+TNl0CjxS3UQJKlw=",
|
||||
"lastModified": 1784546264,
|
||||
"narHash": "sha256-jxVr5EHMYAOkFvS2k0abIvt6NqyshyWmiHHzV17sT2g=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7bfff44b465909f69a442701293bc0badcf476dc",
|
||||
"rev": "e3dea8e4792b09a6c0eb5836b0284ad05b1acba0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-26.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -144,11 +143,11 @@
|
||||
"treefmt-nix": "treefmt-nix_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766810876,
|
||||
"narHash": "sha256-VPElWFQIiP31lXQXEom+L4sl85alZpZn33O4hewsP9k=",
|
||||
"lastModified": 1783182903,
|
||||
"narHash": "sha256-7IteXipJZfFepi5zakxe0jQ5i3vRBQguk0+Gtte1Fu4=",
|
||||
"owner": "hraban",
|
||||
"repo": "mac-app-util",
|
||||
"rev": "4747968574ea58512c5385466400b2364c85d2d0",
|
||||
"rev": "039f33deef21782d4db97087f426504951239887",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -180,11 +179,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780289349,
|
||||
"narHash": "sha256-WtFLQ7R2bErvItKRgkYXqsm0s/cvDnx9fF4XniD3QxQ=",
|
||||
"lastModified": 1784518658,
|
||||
"narHash": "sha256-XzsY3mSStyY1OEEQvYg7Mj8YTAaxz7FFbVRa5xlm40g=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "f4e7a3b814e1df64804cc211f657e65a1e618695",
|
||||
"rev": "e6d84a0cde8a08f33e962d1a347d2aa8688b2e99",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -198,11 +197,11 @@
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780310866,
|
||||
"narHash": "sha256-fPBRVf6A5xlACYcOI59shGrjURuvwu0lRsDoSCEXt/I=",
|
||||
"lastModified": 1784310968,
|
||||
"narHash": "sha256-rkSPTePrKqs4dg+i7ZFCq93+HrClac6oSwXX927SVjA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "4ed851c979641e28597a05086332d75cdc9e395f",
|
||||
"rev": "779c32a00155994c86cde8213a8dd4df139d4355",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -218,11 +217,11 @@
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780169171,
|
||||
"narHash": "sha256-3HBYDfBgZ+ph52HS6Ks/bMMwuh2uONIT72sZ1CtLE/s=",
|
||||
"lastModified": 1784058842,
|
||||
"narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NixOS-WSL",
|
||||
"rev": "998b2821c30b2938637230916904ceb8757c79e8",
|
||||
"rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -234,11 +233,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1766736597,
|
||||
"narHash": "sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ=",
|
||||
"lastModified": 1779796641,
|
||||
"narHash": "sha256-ZsIrKmhp4vbBXoXXmR/tBXA/UCsAQiJL9vsgZEduhVY=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f560ccec6b1116b22e6ed15f4c510997d99d5852",
|
||||
"rev": "25f538306313eae3927264466c70d7001dcea1df",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -297,27 +296,27 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1732617236,
|
||||
"narHash": "sha256-PYkz6U0bSEaEB1al7O1XsqVNeSNS+s3NVclJw7YC43w=",
|
||||
"lastModified": 1782999065,
|
||||
"narHash": "sha256-5Dgj5+pIQYZKrXUGaLCk7CKfN3MmpwIhO94++WVxvng=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
|
||||
"rev": "80d591ed473cfc46329932c2aadac9b435342c7c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-26.05",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1761236834,
|
||||
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
|
||||
"lastModified": 1770107345,
|
||||
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
|
||||
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -342,11 +341,11 @@
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1779560665,
|
||||
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
||||
"lastModified": 1783776592,
|
||||
"narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
|
||||
"rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -358,11 +357,11 @@
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1779560665,
|
||||
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
||||
"lastModified": 1784497964,
|
||||
"narHash": "sha256-vlHUuqAcbcH2RKmHbPiuQzbv1pnzzavXnI62RD0bqCU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
|
||||
"rev": "241313f4e8e508cb9b13278c2b0fa25b9ca27163",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -438,11 +437,11 @@
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766000401,
|
||||
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
|
||||
"lastModified": 1780220602,
|
||||
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
|
||||
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
Reference in New Issue
Block a user