{"skill":{"slug":"devtools-secrets","displayName":"Devtools Secrets","summary":"Knowledge and guardrails for the mise + fnox + infisical secrets toolchain. Use when the user asks to \"configure secrets\", \"set up fnox\", \"infisical\", \"mise...","description":"---\nname: devtools-secrets\ndescription: >\n  Knowledge and guardrails for the mise + fnox + infisical secrets toolchain.\n  Use when the user asks to \"configure secrets\", \"set up fnox\", \"infisical\",\n  \"mise env\", \"secrets management\", \"environment variables for secrets\",\n  or mentions secret injection, secret providers, or env var hygiene.\n---\n\n# DevTools Secrets\n\nKnowledge and guardrails for the **mise + fnox + infisical** secrets toolchain.\n\n## Toolchain Validation\n\n**IMPORTANT: Check tool availability before proceeding with any guidance.**\n\n- mise: !`command -v mise >/dev/null 2>&1 && echo \"INSTALLED ($(mise --version 2>/dev/null | head -1))\" || echo \"MISSING — install with: curl https://mise.run | sh\"`\n- fnox: !`command -v fnox >/dev/null 2>&1 && echo \"INSTALLED ($(fnox --version 2>/dev/null | head -1))\" || echo \"MISSING — install with: mise use -g fnox\"`\n- infisical: !`command -v infisical >/dev/null 2>&1 && echo \"INSTALLED ($(infisical --version 2>/dev/null | head -1))\" || echo \"MISSING — install with: mise use -g infisical\"`\n\nIf any tool above shows **MISSING**, stop and help the user install it before\nproceeding. Do not provide configuration guidance for tools that aren't\ninstalled.\n\n## Project Config State\n\n- fnox.toml: !`test -f fnox.toml && echo \"YES\" || echo \"NO (run: fnox init)\"`\n- .infisical.json: !`test -f .infisical.json && cat .infisical.json || echo \"NO (run: infisical init)\"`\n- mise.toml env section: !`grep -A5 '^\\[env\\]' mise.toml 2>/dev/null || echo \"No env section\"`\n\n## System/Global Config\n\n- mise global config: !`test -f ~/.config/mise/config.toml && head -10 ~/.config/mise/config.toml || echo \"No global mise config\"`\n- fnox global config: !`test -f ~/.config/fnox/config.toml && head -10 ~/.config/fnox/config.toml || echo \"No global fnox config\"`\n- infisical logged in: !`infisical user get 2>/dev/null | head -3 || echo \"Not logged in or not installed\"`\n\n## Tool Roles\n\n| Tool | Role |\n|------|------|\n| **mise** | Task runner + env manager. Orchestrates dev tooling, runs tasks, manages env vars through plugins. |\n| **fnox** | Unified secret interface. Abstracts over multiple secret backends (infisical, age, env files) with a single CLI. |\n| **infisical** | Remote secrets backend. Stores, syncs, and injects secrets from a central server. |\n\nThese tools complement each other: infisical stores secrets remotely, fnox\nprovides a unified local interface to them, and mise orchestrates tasks that\nconsume secrets via fnox.\n\n## Integration Chain\n\nThe typical flow:\n\n1. **fnox.toml** defines infisical as a provider with project/environment config\n2. **`fnox exec --`** resolves secrets from the provider and injects them as env vars\n3. **mise tasks** can wrap `fnox exec` to run commands with secrets injected\n4. Alternatively, **mise env plugins** can call fnox directly for auto-injection on `cd`\n\n## Secrets Enforcement\n\nThis project enforces secrets hygiene via **always-on hooks** in\n`.claude/settings.json` (not scoped to this skill):\n\n- **`block-hardcoded-secrets.py`** — Blocks Edit/Write operations containing\n  hardcoded API keys, tokens, passwords, or known secret prefixes (sk-, ghp_,\n  AKIA, xox[bpras]-)\n- **`block-bare-secret-exports.py`** — Blocks Bash commands that `export`\n  secret-like env vars without wrapping in `fnox exec` or `infisical run`\n\nThese hooks are always active regardless of whether this skill is loaded.\n\n## Configuration Patterns\n\nDetailed configuration for each tool is in the reference files:\n\n- @references/mise-integration.md — mise env plugins, tasks, fnox integration\n- @references/fnox-configuration.md — fnox.toml structure, providers, profiles\n- @references/infisical-patterns.md — infisical CLI, scanning, CI/CD\n\n## Gotchas\n\n- **Order matters**: fnox.toml must exist before `fnox exec` works. Run\n  `fnox init` if missing.\n- **Profile mismatches**: fnox profiles (dev/staging/prod) must match infisical\n  environment slugs. A mismatch silently returns empty secrets.\n- **`.infisical.json` is safe to commit** — it contains project IDs and\n  workspace config, not secrets.\n- **`fnox.toml` may contain sensitive paths** — review before committing if\n  using age-encrypted file provider.\n- **mise env plugins run on `cd`** — if a plugin calls fnox and fnox is\n  misconfigured, you get errors on every directory change.\n- **infisical auth expires** — `infisical login` tokens have a TTL. CI/CD\n  should use `INFISICAL_TOKEN` (service token) instead.\n- **Token path scope is explicit** — a service token scoped to `/` cannot\n  access secrets in child paths like `/git_actions`. Each path requires its\n  own token or use `--recursive` with the CLI directly.\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1156,"installsAllTime":4,"installsCurrent":4,"stars":1,"versions":1},"createdAt":1771561969998,"updatedAt":1778991809007},"latestVersion":{"version":"1.0.0","createdAt":1771561969998,"changelog":"Initial release of devtools-secrets 1.0.0:\n\n- Provides knowledge and guardrails for the mise + fnox + infisical secrets toolchain.\n- Validates tool installation before offering configuration guidance.\n- Outlines key project files and relevant configuration commands.\n- Summarizes the roles and integration chain of mise, fnox, and infisical.\n- Documents secrets enforcement hooks that block insecure patterns.\n- Lists gotchas and troubleshooting tips for typical integration issues.","license":null},"metadata":null,"owner":{"handle":"basher83","userId":"s1761bb070x2s17vhf38fbre2x8847g6","displayName":"basher83","image":"https://avatars.githubusercontent.com/u/129473091?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779940196882}}