l-dotfiles-secrets-access
Where secrets live (the git-crypt configs/secrets/ submodule), unlocking with the YubiKey, how modules read them in the user and system layer, and adding one.
Skill by lsck0
Chalk Labs
Need help deploying l-dotfiles-secrets-access?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/lsck0-l-dotfiles-secrets-access
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/l-dotfiles-secrets-access
What's inside
- Skill name
l-dotfiles-secrets-access- Description
- Where secrets live (the git-crypt configs/secrets/ submodule), unlocking with the YubiKey, how modules read them in the user and system layer, and adding one. Load before touching anything under configs/secrets/ or a module that needs a credential.
- License
- MIT
- Instructions
- 71 lines in SKILL.md · view on GitHub
Before installing
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- files: referenced but missing: scripts/lib/yubikey.nu, scripts/lib/system.nu
Files (1)
- SKILL.md
SKILL.md (first lines)
# secrets-access
Never print, copy out or commit a secret's value. Locations only.
## Personal rollout needs the profile AND the YubiKey, both at once
The dotfiles are installable by anyone, so the owner's personal configuration is gated by two independent facts that
must both hold, never one alone: the `secrets` profile is selected, and the owner's YubiKey is present (it is what
decrypts `keys/`). Selecting the owner profile is necessary but not sufficient. Without the key the machine stays a
generic, still fully capable desktop; it never rolls out the owner's personal things just because someone named the
profile. A module that rolls out personal config or credentials gates on `owner-unlocked` (the two checks together, in
`scripts/lib/secrets.nu`), not merely `profile-has secrets`. When it cannot roll out, an owner-only module skips with
a one-line log (as `bugwarrior` and `projects` do), and a value gate instead defaults the owner value to the
generic one (as `core/git`'s identity and `core/gnupg`'s default-key do); either way a keyless install gets the
generic layer, never the owner's. One exception: a rollout whose secret use is checked at run time (ssh's
`ssh-add.service` and `authorize`, protonvpn's `auto-vpn`, failure-notify's `recovery-drill`) gates on `profile-has
secrets` alone, so it works after an unlock without a re-apply; `configs/base/AGENTS.md` lists them. The offline
recovery key is the deliberate exception for a lost YubiKey, not the normal path.
## Where
- `configs/secrets/`: private submodule `github.com/lsck0/secrets`, only with the `secrets` profile capability.
- `keys/`: every secret, the only git-crypt path. Locked, each file starts with `\0GITCRYPT`.
- `state/`: plaintext app state that is no credential (dalamud, ffxiv, noscript list, repositories); readable locked.
- `configs/secrets/<module>/`: the owner's own modules (`yubikey`, `weblinks`, and the like), plaintext. `dot sync`
refuses to commit any new or changed file outside `keys/`, `state/` and the module dirs.
- `configs/base/yubikey/`: what a fresh install reads first: sealed git-crypt key `secrets.key.age`, one
`age-<serial>.identity` and `ssh-<serial>` stub per YubiKey.
- `configs/secrets/yubikey/`: `recipients.txt` (offline recovery key), `RECOVERY.md`, `u2f_keys` (mapped in
`/etc/u2f_mappings` to each login in `/var/lib/dotfiles/owners`, read by `base/pam`). Its `link` merges
`keys/age.txt` and the identities into `~/.config/sops/age/keys.txt`.
## Unlock and check
```bash
nu -c 'use scripts/lib/secrets.nu *; if (secret-is-plaintext configs/secrets/keys/pgp_privatekey.asc) { "unlocked" } else { "locked" }'
./scripts/dot.nu secrets unlock # pull the submodule, then unlock; one touch each
./scripts/dot.nu secrets lock
```
- `dot apply` unlocks itself with the `secrets` profile. Without a YubiKey a pulled worktree unlocks via the PGP key;
`unlock --identity <file>` is the recovery path.
- Unlock needs a person to touch the key: ask, never wait in a loop. `age-plugin-yubikey` prints no prompt; the blink
is the only cue.
- Touch steps (`with-touch`, `configs/base/yubikey/yubikey.nu`) cap each attempt at 15 min (`TOUCH_ATTEMPT_S`) and
retry until `TOUCH_WAIT` (30 min): the pull clones ~300 MB, and a shorter attempt cap restarts it forever, each
retry wanting a new touch.
- `timeout` needs `--foreground`: otherwise ssh reading `/dev/tty` after the touch is stopped by SIGTTIN and hangs
invisibly. Ctrl+C also misses that group, which keeps holding the key, so a manual `age -d` then hangs without blink.
- pcscd on the bare ISO serves root without polkit.
- The ssh stub `configs/base/yubikey/ssh-<serial>` is committed passphrase-protected (allowed in `.gitleaks.toml`);
`stub-decrypt` asks once into a 600 temp copy, and without a tty skips the pull. `keys/yubikey/ssh-<serial>`
(installed as `~/.ssh/id_ed25519_sk`) is unencrypted under git-crypt. Check a stub with
`ssh-keygen -y -P "" -f <600 copy>` (fails if encrypted).
## Use in a module
- `link`: read `$env.DOTFILES/configs/secrets/keys/<file>`, guard with `secret-is-plaintext`, skip with a message when
locked (`configs/programming/projects/mod.nu`).
- `system`: never reads `keys/`. `dot apply` streams the files in `SYSTEM_SECRETS` (`scripts/lib/system.nu`, plus this
host's `initramfs-ssh/<hostname>/sshkeydir/.ed25519.sk` and the platform's `wireguard`) to a tmpfs
`$DOTFILES_SECRETS`; read `$DOTFILES_SECRETS/<path relative to keys/>` (a locked file is absent).
- State a `backup` verb carries back: guard with `secret-seed-guard <marker> <witness> <label>`
(`configs/gaming/dalamud/mod.nu`), which fails on live state the repo never seeded.
## Add a secret
1. Unlock, put it under `configs/secrets/keys/`. Anywhere else in `configs/secrets/` it is committed in plaintext.
2. A system module needs it: add its path to `SYSTEM_SECRETS`.
3. `dot sync` commits and pushes (submodule first). Agents never do.
4. Never write into `configs/secrets/` while locked: a script checks `secret-is-plaintext` on `pgp_privatekey.asc`
first and stops.From lsck0/arch-dotfiles, MIT.
More from lsck0/arch-dotfiles
- 0.606score
l-agent-task-db
lsck0
Shared taskwarrior/timewarrior conventions for the task-mode skills: db layout, tasks/context/ folder, stage/human-in-the-loop tag vocabulary, scaffolding.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
l-multi-agent-task-mode
lsck0
Self-poll a per-project taskwarrior db and spawn persona workers (Herdr/Hermes under HERDR_ENV, else Claude Code Agent tool) to advance multiple +agent-task…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-gui-testing
lsck0
The one procedure for launching an app, game, editor or viewer only to screenshot or check it, on a headless Hyprland output of the agent's own, with muted…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles
lsck0
Layout and conventions of Luca's arch-dotfiles repo (~/projects/arch-dotfiles), the source of truth for his system configuration: configs, platforms, install…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-apparmor-profile
lsck0
Writing or adjusting an AppArmor profile or local/ drop-in in configs/base/apparmor, loading it, reading denials, apparmor.test.nu, and the enforce vs…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-multi-agent-mode
lsck0
Live orchestrator for one idea worked now, no task db: task-planner plans, orchestrator spawns/drives workers (Herdr/Hermes under HERDR_ENV, else Claude Code…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-auto-memory
lsck0
Keep a project's agent knowledge current: a per-project skills/ folder of project-specific workflows (how to use the project, develop on it, use its tools…
SkillAFreshness: A★ 3Claude Code +9 - 0.600score
l-dotfiles-streaming
lsck0
The OBS setup in configs/creating/obs (the Streaming, VirtualCam and Bare collections, profiles, websocket on 4455, obs-mcp, the bar's obs widget, the…
SkillAFreshness: A★ 3Claude Code +9 - 0.598score
l-persona-auditor-general
lsck0
Passive general audit: best practices, style, maintainability.
SkillAFreshness: A★ 3Claude Code +9 - 0.597score
l-dotfiles-install
lsck0
Installing a machine from this repo (owner, generic, WSL), how the unattended boot chain runs, and adding another login on an installed machine.
SkillAFreshness: A★ 3Claude Code +9 - 0.597score
l-dotfiles-theming
lsck0
How a wallpaper or theme switch recolors the system (wallust templates, theme verbs, themes/*.json, dot theme), adding a template or generator, and testing it…
SkillAFreshness: A★ 3Claude Code +9 - 0.597score
l-dotfiles-platform-facts
lsck0
Machine facts in platforms/<name>.nuon versus user capabilities in profiles/<name>.nuon versus per-module options, which to use, and adding a fact.
SkillAFreshness: A★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/lsck0/arch-dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from lsck0
- 0.606score
l-agent-task-db
lsck0
Shared taskwarrior/timewarrior conventions for the task-mode skills: db layout, tasks/context/ folder, stage/human-in-the-loop tag vocabulary, scaffolding.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
l-multi-agent-task-mode
lsck0
Self-poll a per-project taskwarrior db and spawn persona workers (Herdr/Hermes under HERDR_ENV, else Claude Code Agent tool) to advance multiple +agent-task…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-multi-agent-mode
lsck0
Live orchestrator for one idea worked now, no task db: task-planner plans, orchestrator spawns/drives workers (Herdr/Hermes under HERDR_ENV, else Claude Code…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-apparmor-profile
lsck0
Writing or adjusting an AppArmor profile or local/ drop-in in configs/base/apparmor, loading it, reading denials, apparmor.test.nu, and the enforce vs…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles
lsck0
Layout and conventions of Luca's arch-dotfiles repo (~/projects/arch-dotfiles), the source of truth for his system configuration: configs, platforms, install…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-gui-testing
lsck0
The one procedure for launching an app, game, editor or viewer only to screenshot or check it, on a headless Hyprland output of the agent's own, with muted…
SkillAFreshness: A★ 3Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get l-dotfiles-secrets-access running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
l-dotfiles-secrets-access skill. Agent Mart. https://agentmart.dev/skills/lsck0-l-dotfiles-secrets-access (last updated 2026-10-24)