skills/DEPLOYED.md
dan 5fea49b7c0 feat(tufte-press): evolve skill to complete workflow with JSON generation and build automation
- Transform tufte-press from reference guide to conversation-aware generator
- Add JSON generation from conversation context following strict schema
- Create build automation scripts with Nix environment handling
- Integrate CUPS printing with duplex support
- Add comprehensive workflow documentation

Scripts added:
- skills/tufte-press/scripts/generate-and-build.sh (242 lines)
- skills/tufte-press/scripts/build-card.sh (23 lines)

Documentation:
- Updated SKILL.md with complete workflow instructions (370 lines)
- Updated README.md with usage examples (340 lines)
- Created SKILL-DEVELOPMENT-STRATEGY-tufte-press.md (450 lines)
- Added worklog: 2025-11-10-tufte-press-skill-evolution.org

Features:
- Agent generates valid JSON from conversation
- Schema validation before build (catches errors early)
- Automatic Nix shell entry for dependencies
- PDF build via tufte-press toolchain
- Optional print with duplex support
- Self-contained margin notes enforced
- Complete end-to-end testing

Workflow: Conversation → JSON → Validate → Build → Print

Related: niri-window-capture, screenshot-latest, worklog skills
2025-11-10 15:03:44 -08:00

3.5 KiB

Deployed Skills

Record of skills deployed from this repository to dotfiles.

niri-window-capture

Deployed: 2025-11-08
To: ~/proj/dotfiles/claude/skills/niri-window-capture/
Status: Staged in dotfiles, awaiting rebuild

Security: HIGH RISK - invisible cross-workspace window capture

Pre-deployment checklist:

  • SECURITY.md reviewed
  • Audit logging implemented (logger -t niri-capture)
  • Security warnings in SKILL.md and README.md
  • Upstream feature request template created
  • Niri block-out rules configured (user responsibility)
  • System rebuilt
  • Agents restarted

Files deployed:

  • SKILL.md (184 lines) - Agent instructions
  • SECURITY.md (196 lines) - Threat model and mitigations
  • README.md (108 lines) - User guide
  • UPSTREAM-REQUEST.md (108 lines) - Feature request for --no-clipboard
  • IMPLEMENTATION-NOTES.md - Technical documentation
  • scripts/capture-focused.sh - Capture current window
  • scripts/capture-by-title.sh - Find and capture by title
  • scripts/capture-all-windows.sh - Capture all windows
  • examples/ - Usage examples

Next steps in dotfiles:

cd ~/proj/dotfiles

# Verify staged
git status

# Should see:
# - claude/skills/niri-window-capture/ (new directory)
# - home/claude.nix (modified)
# - home/opencode.nix (modified)

# Commit
git commit -m "Add niri-window-capture skill

Security-sensitive skill for invisible cross-workspace window capture.

Features:
- Capture windows from any workspace without switching
- Direct buffer rendering via niri compositor
- Audit logging to systemd journal (logger -t niri-capture)
- Comprehensive security documentation

Security requirements:
- User must configure niri block-out rules for sensitive apps
- All captures logged to journalctl --user -t niri-capture
- Screenshots always copied to clipboard (niri limitation)
- See SECURITY.md for complete threat model

Tested: cross-workspace capture works invisibly
Audit log: verified working
Upstream request: --no-clipboard flag template ready"

# Rebuild
sudo nixos-rebuild switch --flake .#delpad

# Restart agents
# - Exit and restart OpenCode
# - Restart Claude Code application

Verification after rebuild:

# Check deployment
ls -la ~/.claude/skills/niri-window-capture
ls -la ~/.config/opencode/skills/niri-window-capture

# Should be symlinks to nix store

# Test capture
~/.claude/skills/niri-window-capture/scripts/capture-focused.sh

# Check audit log
journalctl --user -t niri-capture -n 5

User configuration required:

# Edit ~/.config/niri/config.kdl
# Add window-rule for password managers:

window-rule {
    match app-id=r#"^org\.keepassxc\.KeePassXC$"#
    match app-id=r#"^org\.gnome\.World\.Secrets$"#
    block-out-from "screen-capture"
}

# Find app-id for your password manager:
niri msg --json windows | jq -r '.[] | "\(.app_id) - \(.title)"'

screenshot-latest

Status: Not yet deployed
Reason: Pending decision
Security: Low risk (finds existing files only)

Would be simple deployment once decided.


Deployment Process

  1. Develop in ~/proj/skills/skills/<name>/
  2. Deploy with ./bin/deploy-skill.sh <name>
  3. Configure Nix in dotfiles (edit claude.nix + opencode.nix)
  4. Commit to dotfiles git
  5. Rebuild system: sudo nixos-rebuild switch --flake .#delpad
  6. Restart agents
  7. Record in this file

References

  • Deployment strategy: DEPLOYMENT.md
  • Deployment questions: DEPLOYMENT-QUESTIONS.md
  • Dotfiles workflow: ~/proj/dotfiles/docs/skills-and-commands-workflow.md