- 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
129 lines
3.5 KiB
Markdown
129 lines
3.5 KiB
Markdown
# 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**:
|
|
- [X] SECURITY.md reviewed
|
|
- [X] Audit logging implemented (logger -t niri-capture)
|
|
- [X] Security warnings in SKILL.md and README.md
|
|
- [X] 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**:
|
|
```bash
|
|
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**:
|
|
```bash
|
|
# 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**:
|
|
```bash
|
|
# 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
|