DevTools Secrets
Knowledge and guardrails for the mise + fnox + infisical secrets toolchain.
Toolchain Validation
IMPORTANT: Check tool availability before proceeding with any guidance.
- 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"
- 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"
- 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"
If any tool above shows MISSING, stop and help the user install it before
proceeding. Do not provide configuration guidance for tools that aren't
installed.
Project Config State
- fnox.toml: !
test -f fnox.toml && echo "YES" || echo "NO (run: fnox init)"
- .infisical.json: !
test -f .infisical.json && cat .infisical.json || echo "NO (run: infisical init)"
- mise.toml env section: !
grep -A5 '^\[env\]' mise.toml 2>/dev/null || echo "No env section"
System/Global Config
- mise global config: !
test -f ~/.config/mise/config.toml && head -10 ~/.config/mise/config.toml || echo "No global mise config"
- fnox global config: !
test -f ~/.config/fnox/config.toml && head -10 ~/.config/fnox/config.toml || echo "No global fnox config"
- infisical logged in: !
infisical user get 2>/dev/null | head -3 || echo "Not logged in or not installed"
Tool Roles
| Tool |
Role |
| mise |
Task runner + env manager. Orchestrates dev tooling, runs tasks, manages env vars through plugins. |
| fnox |
Unified secret interface. Abstracts over multiple secret backends (infisical, age, env files) with a single CLI. |
| infisical |
Remote secrets backend. Stores, syncs, and injects secrets from a central server. |
These tools complement each other: infisical stores secrets remotely, fnox
provides a unified local interface to them, and mise orchestrates tasks that
consume secrets via fnox.
Integration Chain
The typical flow:
- fnox.toml defines infisical as a provider with project/environment config
fnox exec -- resolves secrets from the provider and injects them as env vars
- mise tasks can wrap
fnox exec to run commands with secrets injected
- Alternatively, mise env plugins can call fnox directly for auto-injection on
cd
Secrets Enforcement
This project enforces secrets hygiene via always-on hooks in
.claude/settings.json (not scoped to this skill):
block-hardcoded-secrets.py — Blocks Edit/Write operations containing
hardcoded API keys, tokens, passwords, or known secret prefixes (sk-, ghp_,
AKIA, xox[bpras]-)
block-bare-secret-exports.py — Blocks Bash commands that export
secret-like env vars without wrapping in fnox exec or infisical run
These hooks are always active regardless of whether this skill is loaded.
Configuration Patterns
Detailed configuration for each tool is in the reference files:
- @references/mise-integration.md — mise env plugins, tasks, fnox integration
- @references/fnox-configuration.md — fnox.toml structure, providers, profiles
- @references/infisical-patterns.md — infisical CLI, scanning, CI/CD
Gotchas
- Order matters: fnox.toml must exist before
fnox exec works. Run
fnox init if missing.
- Profile mismatches: fnox profiles (dev/staging/prod) must match infisical
environment slugs. A mismatch silently returns empty secrets.
.infisical.json is safe to commit — it contains project IDs and
workspace config, not secrets.
fnox.toml may contain sensitive paths — review before committing if
using age-encrypted file provider.
- mise env plugins run on
cd — if a plugin calls fnox and fnox is
misconfigured, you get errors on every directory change.
- infisical auth expires —
infisical login tokens have a TTL. CI/CD
should use INFISICAL_TOKEN (service token) instead.
- Token path scope is explicit — a service token scoped to
/ cannot
access secrets in child paths like /git_actions. Each path requires its
own token or use --recursive with the CLI directly.
1---2name: devtools-secrets3description: Knowledge and guardrails for the mise + fnox + infisical secrets toolchain. Use when the user asks to "configure secrets", "set up fnox", "infisical", "mise env", "secrets management", "environment variables for secrets", or mentions secret injection, secret providers, or env var hygiene.4---5
6# DevTools Secrets
7
8Knowledge and guardrails for the **mise + fnox + infisical** secrets toolchain.
9
10## Toolchain Validation
11
12**IMPORTANT: Check tool availability before proceeding with any guidance.**
13
14- 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"`
15- 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"`
16- 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"`
17
18If any tool above shows **MISSING**, stop and help the user install it before
19proceeding. Do not provide configuration guidance for tools that aren't
20installed.
21
22## Project Config State
23
24- fnox.toml: !`test -f fnox.toml && echo "YES" || echo "NO (run: fnox init)"`
25- .infisical.json: !`test -f .infisical.json && cat .infisical.json || echo "NO (run: infisical init)"`
26- mise.toml env section: !`grep -A5 '^\[env\]' mise.toml 2>/dev/null || echo "No env section"`
27
28## System/Global Config
29
30- mise global config: !`test -f ~/.config/mise/config.toml && head -10 ~/.config/mise/config.toml || echo "No global mise config"`
31- fnox global config: !`test -f ~/.config/fnox/config.toml && head -10 ~/.config/fnox/config.toml || echo "No global fnox config"`
32- infisical logged in: !`infisical user get 2>/dev/null | head -3 || echo "Not logged in or not installed"`
33
34## Tool Roles
35
36| Tool | Role |
37|------|------|
38| **mise** | Task runner + env manager. Orchestrates dev tooling, runs tasks, manages env vars through plugins. |
39| **fnox** | Unified secret interface. Abstracts over multiple secret backends (infisical, age, env files) with a single CLI. |
40| **infisical** | Remote secrets backend. Stores, syncs, and injects secrets from a central server. |
41
42These tools complement each other: infisical stores secrets remotely, fnox
43provides a unified local interface to them, and mise orchestrates tasks that
44consume secrets via fnox.
45
46## Integration Chain
47
48The typical flow:
49
501. **fnox.toml** defines infisical as a provider with project/environment config
512. **`fnox exec --`** resolves secrets from the provider and injects them as env vars
523. **mise tasks** can wrap `fnox exec` to run commands with secrets injected
534. Alternatively, **mise env plugins** can call fnox directly for auto-injection on `cd`
54
55## Secrets Enforcement
56
57This project enforces secrets hygiene via **always-on hooks** in
58`.claude/settings.json` (not scoped to this skill):
59
60- **`block-hardcoded-secrets.py`** — Blocks Edit/Write operations containing
61 hardcoded API keys, tokens, passwords, or known secret prefixes (sk-, ghp_,
62 AKIA, xox[bpras]-)
63- **`block-bare-secret-exports.py`** — Blocks Bash commands that `export`
64 secret-like env vars without wrapping in `fnox exec` or `infisical run`
65
66These hooks are always active regardless of whether this skill is loaded.
67
68## Configuration Patterns
69
70Detailed configuration for each tool is in the reference files:
71
72- @references/mise-integration.md — mise env plugins, tasks, fnox integration
73- @references/fnox-configuration.md — fnox.toml structure, providers, profiles
74- @references/infisical-patterns.md — infisical CLI, scanning, CI/CD
75
76## Gotchas
77
78- **Order matters**: fnox.toml must exist before `fnox exec` works. Run
79 `fnox init` if missing.
80- **Profile mismatches**: fnox profiles (dev/staging/prod) must match infisical
81 environment slugs. A mismatch silently returns empty secrets.
82- **`.infisical.json` is safe to commit** — it contains project IDs and
83 workspace config, not secrets.
84- **`fnox.toml` may contain sensitive paths** — review before committing if
85 using age-encrypted file provider.
86- **mise env plugins run on `cd`** — if a plugin calls fnox and fnox is
87 misconfigured, you get errors on every directory change.
88- **infisical auth expires** — `infisical login` tokens have a TTL. CI/CD
89 should use `INFISICAL_TOKEN` (service token) instead.
90- **Token path scope is explicit** — a service token scoped to `/` cannot
91 access secrets in child paths like `/git_actions`. Each path requires its
92 own token or use `--recursive` with the CLI directly.