pondorasti 0.1.37 → 0.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Brewfile +6 -1
- package/dotfiles/claude/settings.json +3 -5
- package/dotfiles/git/.gitconfig +5 -0
- package/dotfiles/zsh/.zshrc +3 -0
- package/package.json +1 -1
- package/src/tools/dotfiles.ts +0 -2
- package/dotfiles/agents/AGENTS.md +0 -59
- package/dotfiles/agents/skills/create-cli/SKILL.md +0 -95
- package/dotfiles/agents/skills/create-cli/references/cli-guidelines.md +0 -239
- package/dotfiles/agents/skills/learn/SKILL.md +0 -45
- package/dotfiles/agents/skills/ncu/SKILL.md +0 -14
- package/dotfiles/agents/skills/swift-concurrency-expert/SKILL.md +0 -39
- package/dotfiles/agents/skills/swift-concurrency-expert/references/approachable-concurrency.md +0 -63
- package/dotfiles/agents/skills/swift-concurrency-expert/references/swift-6-2-concurrency.md +0 -272
- package/dotfiles/agents/skills/swift-concurrency-expert/references/swiftui-concurrency-tour-wwdc.md +0 -33
- package/dotfiles/agents/skills/swiftui-liquid-glass/SKILL.md +0 -92
- package/dotfiles/agents/skills/swiftui-liquid-glass/references/liquid-glass.md +0 -280
- package/dotfiles/agents/skills/swiftui-performance-audit/SKILL.md +0 -189
- package/dotfiles/agents/skills/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +0 -46
- package/dotfiles/agents/skills/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +0 -29
- package/dotfiles/agents/skills/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +0 -33
- package/dotfiles/agents/skills/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +0 -52
- package/dotfiles/agents/skills/swiftui-ui-patterns/SKILL.md +0 -97
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/app-wiring.md +0 -194
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/components-index.md +0 -43
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/controls.md +0 -57
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/deeplinks.md +0 -66
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/focus.md +0 -90
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/form.md +0 -97
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/grids.md +0 -71
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/haptics.md +0 -71
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/input-toolbar.md +0 -51
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/lightweight-clients.md +0 -93
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/list.md +0 -86
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/loading-placeholders.md +0 -38
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/macos-settings.md +0 -71
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/matched-transitions.md +0 -59
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/media.md +0 -73
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/menu-bar.md +0 -101
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/navigationstack.md +0 -159
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/overlay.md +0 -45
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/scrollview.md +0 -87
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/searchable.md +0 -71
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/sheets.md +0 -113
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/split-views.md +0 -72
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/tabview.md +0 -114
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/theming.md +0 -71
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/title-menus.md +0 -93
- package/dotfiles/agents/skills/swiftui-ui-patterns/references/top-bar.md +0 -49
- package/dotfiles/agents/skills/swiftui-view-refactor/SKILL.md +0 -138
- package/dotfiles/agents/skills/swiftui-view-refactor/references/mv-patterns.md +0 -314
package/Brewfile
CHANGED
|
@@ -4,6 +4,7 @@ tap "anomalyco/tap" # Tap for opencode and related tools
|
|
|
4
4
|
|
|
5
5
|
# Development Tools
|
|
6
6
|
brew "lazygit" # Terminal UI for git commands - makes git operations visual and intuitive
|
|
7
|
+
brew "git-lfs" # Git Large File Storage - manage large files in Git repositories efficiently
|
|
7
8
|
brew "docker" # Docker CLI - command-line interface for interacting with Docker
|
|
8
9
|
brew "colima" # Docker-compatible container runtime for macOS using Lima
|
|
9
10
|
cask "orbstack" # Fast, lightweight Docker & Linux VM runtime for macOS
|
|
@@ -14,13 +15,16 @@ brew "tmux" # Terminal multiplexer - multiple term
|
|
|
14
15
|
brew "pnpm" # Fast, disk space efficient package manager for Node.js
|
|
15
16
|
brew "oven-sh/bun/bun" # Fast all-in-one JavaScript runtime, bundler, test runner, and package manager
|
|
16
17
|
brew "node" # JavaScript runtime built on Chrome's V8 JavaScript engine
|
|
18
|
+
brew "vite-plus" # Unified web development toolchain - provides vp
|
|
17
19
|
brew "fnm" # Fast Node Manager - simple, fast Node.js version manager built in Rust
|
|
20
|
+
brew "mise" # Polyglot runtime manager for Node.js, Ruby, and other development tools
|
|
18
21
|
brew "rbenv" # Ruby version manager - simple, lightweight Ruby environment manager
|
|
19
22
|
brew "stripe/stripe-cli/stripe" # Stripe CLI for testing and managing Stripe resources
|
|
20
23
|
brew "supabase" # Supabase CLI for local development and deployment
|
|
21
24
|
brew "flyctl" # Fly.io CLI for app deployment and infrastructure management
|
|
22
25
|
brew "cloudflare-wrangler" # Cloudflare Wrangler CLI for Workers development and deployment
|
|
23
26
|
brew "mysql" # Open source relational database management system
|
|
27
|
+
brew "redis" # In-memory data store - caching, queues, pub/sub, and lightweight database use cases
|
|
24
28
|
brew "anomalyco/tap/opencode" # Open source code editor/IDE
|
|
25
29
|
|
|
26
30
|
# System Monitoring
|
|
@@ -47,6 +51,7 @@ cask "zed" # High-performance code editor designe
|
|
|
47
51
|
cask "claude" # Claude AI assistant desktop application
|
|
48
52
|
cask "claude-code" # Claude AI coding assistant for the terminal
|
|
49
53
|
cask "codex" # OpenAI's Codex CLI - coding agent that runs in your terminal
|
|
54
|
+
cask "codex-app" # OpenAI's Codex desktop app for managing coding agents
|
|
50
55
|
cask "opencode-desktop" # Desktop app for OpenCode AI coding assistant
|
|
51
56
|
cask "android-studio" # Official IDE for Android app development
|
|
52
57
|
cask "tableplus" # Modern, native database management tool
|
|
@@ -59,7 +64,7 @@ cask "851-labs/tap/gardenbridge" # Drag and drop content between Mac an
|
|
|
59
64
|
cask "1password" # Password manager and secure wallet
|
|
60
65
|
cask "1password-cli" # 1Password CLI for scripting and automation
|
|
61
66
|
cask "cleanshot" # Advanced screenshot and screen recording tool
|
|
62
|
-
cask "linear
|
|
67
|
+
cask "linear" # Modern project management and issue tracking for product teams
|
|
63
68
|
cask "notion" # All-in-one workspace for notes, docs, and collaboration
|
|
64
69
|
cask "notion-calendar" # Calendar app integrated with Notion
|
|
65
70
|
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"env": {
|
|
3
|
-
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
|
4
|
-
},
|
|
5
2
|
"permissions": {
|
|
6
3
|
"defaultMode": "dontAsk"
|
|
7
4
|
},
|
|
8
|
-
"model": "opus",
|
|
9
5
|
"enabledPlugins": {
|
|
10
6
|
"swift-lsp@claude-plugins-official": true
|
|
11
7
|
},
|
|
12
|
-
"
|
|
8
|
+
"effortLevel": "high",
|
|
9
|
+
"skipDangerousModePermissionPrompt": true,
|
|
10
|
+
"fastMode": true
|
|
13
11
|
}
|
package/dotfiles/git/.gitconfig
CHANGED
|
@@ -15,3 +15,8 @@
|
|
|
15
15
|
[alias]
|
|
16
16
|
autorebase = "!f() { git fetch origin $1 && git rebase origin/$1; }; f"
|
|
17
17
|
bclean = "!f() { git branch --no-color | fzf -m | xargs -I {} git branch -D '{}'; }; f"
|
|
18
|
+
[filter "lfs"]
|
|
19
|
+
clean = git-lfs clean -- %f
|
|
20
|
+
smudge = git-lfs smudge -- %f
|
|
21
|
+
process = git-lfs filter-process
|
|
22
|
+
required = true
|
package/dotfiles/zsh/.zshrc
CHANGED
package/package.json
CHANGED
package/src/tools/dotfiles.ts
CHANGED
|
@@ -11,7 +11,6 @@ enum DotfilesPackage {
|
|
|
11
11
|
Zsh = "zsh",
|
|
12
12
|
Cursor = "cursor",
|
|
13
13
|
Claude = "claude",
|
|
14
|
-
Agents = "agents",
|
|
15
14
|
Nvim = "nvim",
|
|
16
15
|
Opencode = "opencode",
|
|
17
16
|
}
|
|
@@ -19,7 +18,6 @@ enum DotfilesPackage {
|
|
|
19
18
|
const PACKAGE_TARGET_PATHS: Partial<Record<DotfilesPackage, string>> = {
|
|
20
19
|
[DotfilesPackage.Cursor]: "~/Library/Application Support/Cursor/User",
|
|
21
20
|
[DotfilesPackage.Claude]: "~/.claude",
|
|
22
|
-
[DotfilesPackage.Agents]: "~/.claude", // OpenCode also reads from ~/.claude/skills/
|
|
23
21
|
[DotfilesPackage.Nvim]: "~/.config/nvim",
|
|
24
22
|
[DotfilesPackage.Opencode]: "~/.config/opencode",
|
|
25
23
|
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# AGENTS.md
|
|
2
|
-
|
|
3
|
-
pondorasti owns this.
|
|
4
|
-
|
|
5
|
-
## Agent Protocol
|
|
6
|
-
|
|
7
|
-
- Contact: Alexandru Turcanu, @pondorsti, [pondorasti@gmail.com](mailto:pondorasti@gmail.com)
|
|
8
|
-
- Work style: telegraph; noun-phrases ok; drop grammar; min tokens.
|
|
9
|
-
- Commits: Conventional Commits (`feat`, `fix`, `refactor`, `build`, `ci`, `chore`, `docs`, `style`, `perf`, `test`).
|
|
10
|
-
- Use the system command `trash` for deletes
|
|
11
|
-
- Remove human from the loop and prefer end-to-end verify; if blocked, say what’s missing.
|
|
12
|
-
- Keep files <~500 LOC; split/refactor as needed.
|
|
13
|
-
|
|
14
|
-
## Git
|
|
15
|
-
|
|
16
|
-
- Safe by default: `git status/diff/log`.
|
|
17
|
-
- Push only when the user asks.
|
|
18
|
-
- Branch changes require user consent.
|
|
19
|
-
- Don’t delete/rename unexpected stuff; stop + ask.
|
|
20
|
-
- Destructive ops forbidden unless explicit (`reset --hard`, `clean`, `restore`, `rm`, `amend` etc).
|
|
21
|
-
- If user types a command (“pull and push”), that’s consent for that command.
|
|
22
|
-
|
|
23
|
-
## **macOS Permissions / Signing (TCC)**
|
|
24
|
-
|
|
25
|
-
- Never re-sign / ad-hoc sign / change bundle ID as “debug” without explicit ok (can mess TCC).
|
|
26
|
-
|
|
27
|
-
## **Critical Thinking**
|
|
28
|
-
|
|
29
|
-
- Fix root cause (not band-aid).
|
|
30
|
-
- Unsure: read more code; if still stuck, ask w/ short options.
|
|
31
|
-
- Conflicts: call out; pick safer path.
|
|
32
|
-
- Unrecognized changes: assume other agent; keep going; focus your changes. If it causes issues, stop + ask user.
|
|
33
|
-
- Leave breadcrumb notes in thread.
|
|
34
|
-
|
|
35
|
-
## Tools
|
|
36
|
-
|
|
37
|
-
Leverage the help menu of each tool to learn how to use it.
|
|
38
|
-
|
|
39
|
-
### gh
|
|
40
|
-
|
|
41
|
-
GitHub CLI for PRs, CI, Releases.
|
|
42
|
-
|
|
43
|
-
When someone shares a GitHub URL, use `gh` to read it:
|
|
44
|
-
|
|
45
|
-
```jsx
|
|
46
|
-
gh issue view <url> --comments
|
|
47
|
-
gh pr view <url> --comments --files
|
|
48
|
-
gh run list / gh run view <id>
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### pd
|
|
52
|
-
|
|
53
|
-
Personal CLI for pondorasti
|
|
54
|
-
|
|
55
|
-
When you need to clone a repo, use `pd clone` to automatically clone the repo in the correct directory.
|
|
56
|
-
|
|
57
|
-
### trash
|
|
58
|
-
|
|
59
|
-
Move files to trash using the system command.
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: create-cli
|
|
3
|
-
description: >
|
|
4
|
-
Design command-line interface parameters and UX: arguments, flags, subcommands,
|
|
5
|
-
help text, output formats, error messages, exit codes, prompts, config/env
|
|
6
|
-
precedence, and safe/dry-run behavior. Use when you're designing a CLI spec
|
|
7
|
-
(before implementation) or refactoring an existing CLI's surface area for
|
|
8
|
-
consistency, composability, and discoverability.
|
|
9
|
-
metadata:
|
|
10
|
-
author: steipete
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Create CLI
|
|
14
|
-
|
|
15
|
-
Design CLI surface area (syntax + behavior), human-first, script-friendly.
|
|
16
|
-
|
|
17
|
-
## Do This First
|
|
18
|
-
|
|
19
|
-
- Read `references/cli-guidelines.md` and apply it as the default rubric.
|
|
20
|
-
- Upstream/full guidelines: https://clig.dev/ (propose changes: https://github.com/cli-guidelines/cli-guidelines)
|
|
21
|
-
- Ask only the minimum clarifying questions needed to lock the interface.
|
|
22
|
-
|
|
23
|
-
## Clarify (fast)
|
|
24
|
-
|
|
25
|
-
Ask, then proceed with best-guess defaults if user is unsure:
|
|
26
|
-
|
|
27
|
-
- Command name + one-sentence purpose.
|
|
28
|
-
- Primary user: humans, scripts, or both.
|
|
29
|
-
- Input sources: args vs stdin; files vs URLs; secrets (never via flags).
|
|
30
|
-
- Output contract: human text, `--json`, `--plain`, exit codes.
|
|
31
|
-
- Interactivity: prompts allowed? need `--no-input`? confirmations for destructive ops?
|
|
32
|
-
- Config model: flags/env/config-file; precedence; XDG vs repo-local.
|
|
33
|
-
- Platform/runtime constraints: macOS/Linux/Windows; single binary vs runtime.
|
|
34
|
-
|
|
35
|
-
## Deliverables (what to output)
|
|
36
|
-
|
|
37
|
-
When designing a CLI, produce a compact spec the user can implement:
|
|
38
|
-
|
|
39
|
-
- Command tree + USAGE synopsis.
|
|
40
|
-
- Args/flags table (types, defaults, required/optional, examples).
|
|
41
|
-
- Subcommand semantics (what each does; idempotence; state changes).
|
|
42
|
-
- Output rules: stdout vs stderr; TTY detection; `--json`/`--plain`; `--quiet`/`--verbose`.
|
|
43
|
-
- Error + exit code map (top failure modes).
|
|
44
|
-
- Safety rules: `--dry-run`, confirmations, `--force`, `--no-input`.
|
|
45
|
-
- Config/env rules + precedence (flags > env > project config > user config > system).
|
|
46
|
-
- Shell completion story (if relevant): install/discoverability; generation command or bundled scripts.
|
|
47
|
-
- 5–10 example invocations (common flows; include piped/stdin examples).
|
|
48
|
-
|
|
49
|
-
## Default Conventions (unless user says otherwise)
|
|
50
|
-
|
|
51
|
-
- `-h/--help` always shows help and ignores other args.
|
|
52
|
-
- `--version` prints version to stdout.
|
|
53
|
-
- Primary data to stdout; diagnostics/errors to stderr.
|
|
54
|
-
- Add `--json` for machine output; consider `--plain` for stable line-based text.
|
|
55
|
-
- Prompts only when stdin is a TTY; `--no-input` disables prompts.
|
|
56
|
-
- Destructive operations: interactive confirmation + non-interactive requires `--force` or explicit `--confirm=...`.
|
|
57
|
-
- Respect `NO_COLOR`, `TERM=dumb`; provide `--no-color`.
|
|
58
|
-
- Handle Ctrl-C: exit fast; bounded cleanup; be crash-only when possible.
|
|
59
|
-
|
|
60
|
-
## Templates (copy into your answer)
|
|
61
|
-
|
|
62
|
-
### CLI spec skeleton
|
|
63
|
-
|
|
64
|
-
Fill these sections, drop anything irrelevant:
|
|
65
|
-
|
|
66
|
-
1. **Name**: `mycmd`
|
|
67
|
-
2. **One-liner**: `...`
|
|
68
|
-
3. **USAGE**:
|
|
69
|
-
- `mycmd [global flags] <subcommand> [args]`
|
|
70
|
-
4. **Subcommands**:
|
|
71
|
-
- `mycmd init ...`
|
|
72
|
-
- `mycmd run ...`
|
|
73
|
-
5. **Global flags**:
|
|
74
|
-
- `-h, --help`
|
|
75
|
-
- `--version`
|
|
76
|
-
- `-q, --quiet` / `-v, --verbose` (define exactly)
|
|
77
|
-
- `--json` / `--plain` (if applicable)
|
|
78
|
-
6. **I/O contract**:
|
|
79
|
-
- stdout:
|
|
80
|
-
- stderr:
|
|
81
|
-
7. **Exit codes**:
|
|
82
|
-
- `0` success
|
|
83
|
-
- `1` generic failure
|
|
84
|
-
- `2` invalid usage (parse/validation)
|
|
85
|
-
- (add command-specific codes only when actually useful)
|
|
86
|
-
8. **Env/config**:
|
|
87
|
-
- env vars:
|
|
88
|
-
- config file path + precedence:
|
|
89
|
-
9. **Examples**:
|
|
90
|
-
- …
|
|
91
|
-
|
|
92
|
-
## Notes
|
|
93
|
-
|
|
94
|
-
- Prefer recommending a parsing library (language-specific) only when asked; otherwise keep this skill language-agnostic.
|
|
95
|
-
- If the request is “design parameters”, do not drift into implementation.
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
# Command Line Interface Guidelines (condensed)
|
|
2
|
-
|
|
3
|
-
Source + contribution:
|
|
4
|
-
- Full guide: https://clig.dev/
|
|
5
|
-
- Propose changes: https://github.com/cli-guidelines/cli-guidelines
|
|
6
|
-
|
|
7
|
-
Table of contents:
|
|
8
|
-
- Foreword
|
|
9
|
-
- Introduction
|
|
10
|
-
- Philosophy
|
|
11
|
-
- Human-first design
|
|
12
|
-
- Simple parts that work together
|
|
13
|
-
- Consistency across programs
|
|
14
|
-
- Saying (just) enough
|
|
15
|
-
- Ease of discovery
|
|
16
|
-
- Conversation as the norm
|
|
17
|
-
- Robustness
|
|
18
|
-
- Empathy
|
|
19
|
-
- Chaos
|
|
20
|
-
- Guidelines
|
|
21
|
-
- The Basics
|
|
22
|
-
- Help
|
|
23
|
-
- Documentation
|
|
24
|
-
- Output
|
|
25
|
-
- Errors
|
|
26
|
-
- Arguments and flags
|
|
27
|
-
- Interactivity
|
|
28
|
-
- Subcommands
|
|
29
|
-
- Robustness
|
|
30
|
-
- Future-proofing
|
|
31
|
-
- Signals and control characters
|
|
32
|
-
- Configuration
|
|
33
|
-
- Environment variables
|
|
34
|
-
- Naming
|
|
35
|
-
- Distribution
|
|
36
|
-
- Analytics
|
|
37
|
-
- Further reading
|
|
38
|
-
- Authors
|
|
39
|
-
|
|
40
|
-
This is a practical rubric for designing CLI interfaces (args/flags/subcommands/help/output/errors/config). Keep humans first, but preserve composability and scriptability.
|
|
41
|
-
|
|
42
|
-
## Foreword
|
|
43
|
-
|
|
44
|
-
- CLI still uniquely powerful: inspect/control systems; works interactively and in automation.
|
|
45
|
-
- Modern CLI = human-first text UI, not just a machine-first REPL veneer.
|
|
46
|
-
- Goal: maximize utility + accessibility; design for humans and composition.
|
|
47
|
-
|
|
48
|
-
## Introduction
|
|
49
|
-
|
|
50
|
-
- This guide mixes philosophy + concrete rules; bias: examples over theorizing.
|
|
51
|
-
- Out of scope: full-screen TUIs (vim/emacs-like).
|
|
52
|
-
- Language/tooling agnostic: apply principles regardless of implementation stack.
|
|
53
|
-
|
|
54
|
-
## Philosophy
|
|
55
|
-
|
|
56
|
-
### Human-first design
|
|
57
|
-
|
|
58
|
-
- Optimize for humans by default; scripts still work via stable modes (`--json`, `--plain`, exit codes).
|
|
59
|
-
- Don’t leak developer-only output to normal users; reserve for verbose/debug.
|
|
60
|
-
|
|
61
|
-
### Simple parts that work together
|
|
62
|
-
|
|
63
|
-
- Assume your output becomes someone else’s input.
|
|
64
|
-
- Respect stdio, exit codes, signals; keep primary output on stdout.
|
|
65
|
-
- Prefer line-oriented plain text for piping; add JSON for structured needs.
|
|
66
|
-
|
|
67
|
-
### Consistency across programs
|
|
68
|
-
|
|
69
|
-
- Follow common conventions unless they harm usability.
|
|
70
|
-
- Reuse standard flag names (`--help`, `--version`, `--json`, `--dry-run`, …).
|
|
71
|
-
|
|
72
|
-
### Saying (just) enough
|
|
73
|
-
|
|
74
|
-
- Too little: “hangs” with no feedback. Too much: noisy debug spew.
|
|
75
|
-
- Make progress/status visible, but keep success output brief.
|
|
76
|
-
|
|
77
|
-
### Ease of discovery
|
|
78
|
-
|
|
79
|
-
- Help text is part of UX. Put examples first; suggest next commands.
|
|
80
|
-
- When user errs, help them recover: point to the right syntax/flag.
|
|
81
|
-
|
|
82
|
-
### Conversation as the norm
|
|
83
|
-
|
|
84
|
-
- Expect trial-and-error loops. Design for repeated invocations.
|
|
85
|
-
- Provide safe “dry run”/preview; show intermediate state; confirm scary actions.
|
|
86
|
-
|
|
87
|
-
### Robustness
|
|
88
|
-
|
|
89
|
-
- Be correct *and* feel robust: responsive, clear, no scary traces by default.
|
|
90
|
-
- Handle bad input gracefully; validate early; clear errors.
|
|
91
|
-
|
|
92
|
-
### Empathy
|
|
93
|
-
|
|
94
|
-
- Be on the user’s side. Make success likely; make failure informative.
|
|
95
|
-
- Character is fine; clutter is not.
|
|
96
|
-
|
|
97
|
-
### Chaos
|
|
98
|
-
|
|
99
|
-
- Terminal ecosystem inconsistent; follow norms, but break them intentionally when needed.
|
|
100
|
-
- If you diverge, do it with clarity and document it.
|
|
101
|
-
|
|
102
|
-
## Guidelines
|
|
103
|
-
|
|
104
|
-
### The Basics
|
|
105
|
-
|
|
106
|
-
- Use a real argument parsing library when possible (built-in or reputable OSS).
|
|
107
|
-
- Exit codes: `0` on success, non-zero on failure; map a few important failure modes.
|
|
108
|
-
- Stdout for primary output (and machine-readable output). Stderr for messages/logs/errors.
|
|
109
|
-
|
|
110
|
-
### Help
|
|
111
|
-
|
|
112
|
-
- Always support `-h`/`--help`. Do not overload `-h`.
|
|
113
|
-
- If run with missing required args, show concise help + 1–2 examples + “use --help”.
|
|
114
|
-
- Git-like CLIs: support `mycmd help`, `mycmd help subcmd`, `mycmd subcmd --help`.
|
|
115
|
-
- Link to a support path (repo/issues/docs). Prefer deep links per subcommand (when you have web docs).
|
|
116
|
-
- Lead with examples; show common flags/commands first; keep formatting readable without escape-char soup.
|
|
117
|
-
|
|
118
|
-
### Documentation
|
|
119
|
-
|
|
120
|
-
- Provide web docs (searchable, linkable).
|
|
121
|
-
- Provide terminal docs (`mycmd help ...`); consider man pages where sensible.
|
|
122
|
-
|
|
123
|
-
### Output
|
|
124
|
-
|
|
125
|
-
- Humans first, machines second: detect TTY to choose formatting.
|
|
126
|
-
- If fancy human output breaks parsing, offer `--plain` (stable, line-based) and/or `--json`.
|
|
127
|
-
- On success: usually print *something*, but keep it brief; add `-q/--quiet` when useful.
|
|
128
|
-
- If you change state, say what changed and what the new state is.
|
|
129
|
-
- Suggest “next commands” in workflowy tools.
|
|
130
|
-
- Use color sparingly; disable when not a TTY, `NO_COLOR` set, `TERM=dumb`, or `--no-color`.
|
|
131
|
-
- No animations/progress bars when stdout isn’t a TTY.
|
|
132
|
-
- Use a pager for long output only when interactive; common `less` opts: `-FIRX`.
|
|
133
|
-
|
|
134
|
-
### Errors
|
|
135
|
-
|
|
136
|
-
- Catch and rewrite expected errors for humans; avoid stack traces by default.
|
|
137
|
-
- Keep signal-to-noise high; group repeated errors.
|
|
138
|
-
- Put the most important info last; use red intentionally (don’t drown the user).
|
|
139
|
-
- For unexpected crashes: provide a path to debug info + bug report instructions; write logs to a file if large.
|
|
140
|
-
|
|
141
|
-
### Arguments and flags
|
|
142
|
-
|
|
143
|
-
- Prefer flags over positional args for clarity and future flexibility.
|
|
144
|
-
- Provide long versions of all flags; use one-letter flags only for the most common.
|
|
145
|
-
- Multiple args ok for repeated simple items (`rm a b c`); avoid “2+ different positional concepts”.
|
|
146
|
-
- Standard flag names (common set):
|
|
147
|
-
- `-h, --help` help
|
|
148
|
-
- `--version` version
|
|
149
|
-
- `-q, --quiet` less output
|
|
150
|
-
- `-v, --verbose` more output (avoid `-v` meaning version)
|
|
151
|
-
- `-d, --debug` debug output
|
|
152
|
-
- `-f, --force` skip confirmation / force
|
|
153
|
-
- `-n, --dry-run` preview only
|
|
154
|
-
- `--json` structured output
|
|
155
|
-
- `-o, --output <file>` output path
|
|
156
|
-
- `--no-input` disable prompts
|
|
157
|
-
- Default should be right for most users (don’t rely on everyone aliasing a flag).
|
|
158
|
-
- Support `-` for stdin/stdout when input/output is a file.
|
|
159
|
-
- Avoid secrets in flags; prefer `--password-file` or stdin.
|
|
160
|
-
- Prefer order independence for flags/subcommands where the parser allows.
|
|
161
|
-
|
|
162
|
-
### Interactivity
|
|
163
|
-
|
|
164
|
-
- Prompt only if stdin is a TTY.
|
|
165
|
-
- `--no-input`: never prompt; if required input missing, fail with an actionable message.
|
|
166
|
-
- Password prompts: disable echo.
|
|
167
|
-
- Make escape hatch obvious (Ctrl-C, or explicit “press q”, etc).
|
|
168
|
-
|
|
169
|
-
### Subcommands
|
|
170
|
-
|
|
171
|
-
- Use subcommands for complexity; share global flags/config/help.
|
|
172
|
-
- Be consistent across subcommands: naming, flags, output, formatting.
|
|
173
|
-
- Consider noun-verb (`docker container create`) or verb-noun; pick one and stick to it.
|
|
174
|
-
- Avoid ambiguous pairs (`update` vs `upgrade`) unless sharply differentiated.
|
|
175
|
-
- Avoid implicit “catch-all” subcommands; don’t allow arbitrary abbreviations (future-proofing trap).
|
|
176
|
-
|
|
177
|
-
### Robustness
|
|
178
|
-
|
|
179
|
-
- Validate early; fail fast with good error messages.
|
|
180
|
-
- Be responsive: print something in <100ms (especially before network I/O).
|
|
181
|
-
- Show progress for long tasks (interactive only); don’t interleave logs confusingly.
|
|
182
|
-
- Use timeouts for network calls; allow configuration.
|
|
183
|
-
- Make reruns safe: idempotent where possible; recoverable; “crash-only” where feasible.
|
|
184
|
-
|
|
185
|
-
### Future-proofing
|
|
186
|
-
|
|
187
|
-
- Interfaces are contracts: args, flags, subcommands, config, env vars, output modes.
|
|
188
|
-
- Keep changes additive; deprecate loudly + early; provide migration paths.
|
|
189
|
-
- Allow human output to evolve; keep scripts stable by encouraging `--plain`/`--json`.
|
|
190
|
-
|
|
191
|
-
### Signals and control characters
|
|
192
|
-
|
|
193
|
-
- Ctrl-C: exit quickly; say something immediately; bound cleanup.
|
|
194
|
-
- Second Ctrl-C: optionally force; tell user what it does.
|
|
195
|
-
- Assume cleanup might not run; design for crash-only recovery.
|
|
196
|
-
|
|
197
|
-
### Configuration
|
|
198
|
-
|
|
199
|
-
- Pick the right mechanism:
|
|
200
|
-
- Per-invocation: flags (and sometimes env).
|
|
201
|
-
- Per-user/machine: flags + env; possibly config file.
|
|
202
|
-
- Per-project (checked in): config file in repo.
|
|
203
|
-
- Follow XDG base directories for user-level config when applicable.
|
|
204
|
-
- Precedence (high → low): flags > process env > project config > user config > system config.
|
|
205
|
-
- Don’t silently modify other programs’ config; ask consent; prefer new files over editing existing ones.
|
|
206
|
-
|
|
207
|
-
### Environment variables
|
|
208
|
-
|
|
209
|
-
- Names: uppercase + digits + underscores; single-line values preferred.
|
|
210
|
-
- Respect common vars when relevant: `NO_COLOR`, `DEBUG`, `EDITOR`, `PAGER`, proxy vars, `TERM`, `TMPDIR`, `HOME`, `COLUMNS/LINES`.
|
|
211
|
-
- `.env` can be useful for per-project non-secret knobs; don’t use it as a full config system.
|
|
212
|
-
- Don’t accept secrets via env vars by default; prefer files/pipes/sockets/secret managers.
|
|
213
|
-
|
|
214
|
-
### Naming
|
|
215
|
-
|
|
216
|
-
- Command name: simple, memorable, lowercase; avoid too-generic collisions.
|
|
217
|
-
- Keep it short but not cryptic; easy to type matters.
|
|
218
|
-
|
|
219
|
-
### Distribution
|
|
220
|
-
|
|
221
|
-
- Prefer single binary when practical; otherwise use native packaging for uninstallability.
|
|
222
|
-
- Make uninstall easy; include instructions.
|
|
223
|
-
|
|
224
|
-
### Analytics
|
|
225
|
-
|
|
226
|
-
- Never phone home without explicit consent; explain what/why/how/retention.
|
|
227
|
-
- Prefer opt-in; if opt-out, make it obvious and easy to disable.
|
|
228
|
-
- Consider alternatives: docs instrumentation, download metrics, talking to users.
|
|
229
|
-
|
|
230
|
-
### Further reading
|
|
231
|
-
|
|
232
|
-
- POSIX Utility Conventions
|
|
233
|
-
- GNU Coding Standards (esp. flags/help conventions)
|
|
234
|
-
- 12 Factor CLI Apps
|
|
235
|
-
- Heroku CLI Style Guide
|
|
236
|
-
|
|
237
|
-
## Authors
|
|
238
|
-
|
|
239
|
-
Original “Command Line Interface Guidelines” authors (and many contributors): Aanand Prasad, Ben Firshman, Carl Tashian, Eva Parish. Design by Mark Hurrell.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: learn
|
|
3
|
-
description: Extract non-obvious learnings from session to AGENTS.md files to build codebase understanding
|
|
4
|
-
metadata:
|
|
5
|
-
author: R44VC0RP
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Analyze this session and extract non-obvious learnings to add to AGENTS.md files.
|
|
9
|
-
|
|
10
|
-
AGENTS.md files can exist at any directory level, not just the project root. When an agent reads a file, any AGENTS.md in parent directories are automatically loaded into the context of the tool read. Place learnings as close to the relevant code as possible:
|
|
11
|
-
|
|
12
|
-
- Project-wide learnings → root AGENTS.md
|
|
13
|
-
- Package/module-specific → packages/foo/AGENTS.md
|
|
14
|
-
- Feature-specific → src/auth/AGENTS.md
|
|
15
|
-
|
|
16
|
-
What counts as a learning (non-obvious discoveries only):
|
|
17
|
-
|
|
18
|
-
- Hidden relationships between files or modules
|
|
19
|
-
- Execution paths that differ from how code appears
|
|
20
|
-
- Non-obvious configuration, env vars, or flags
|
|
21
|
-
- Debugging breakthroughs when error messages were misleading
|
|
22
|
-
- API/tool quirks and workarounds
|
|
23
|
-
- Build/test commands not in README
|
|
24
|
-
- Architectural decisions and constraints
|
|
25
|
-
- Files that must change together
|
|
26
|
-
|
|
27
|
-
What NOT to include:
|
|
28
|
-
|
|
29
|
-
- Obvious facts from documentation
|
|
30
|
-
- Standard language/framework behavior
|
|
31
|
-
- Things already in an AGENTS.md
|
|
32
|
-
- Verbose explanations
|
|
33
|
-
- Session-specific details
|
|
34
|
-
|
|
35
|
-
Process:
|
|
36
|
-
|
|
37
|
-
1. Review session for discoveries, errors that took multiple attempts, unexpected connections
|
|
38
|
-
2. Determine scope - what directory does each learning apply to?
|
|
39
|
-
3. Read existing AGENTS.md files at relevant levels
|
|
40
|
-
4. Create or update AGENTS.md at the appropriate level
|
|
41
|
-
5. Keep entries to 1-3 lines per insight
|
|
42
|
-
|
|
43
|
-
After updating, summarize which AGENTS.md files were created/updated and how many learnings per file.
|
|
44
|
-
|
|
45
|
-
$ARGUMENTS
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ncu
|
|
3
|
-
description: Update dependencies
|
|
4
|
-
metadata:
|
|
5
|
-
author: pondorasti
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
1. Use `bunx npm-check-updates -u` to bump all dependencies to latest (add the `-w` flag if inside a monorepo).
|
|
9
|
-
2. Install new dependency versions using the appropriate package manager.
|
|
10
|
-
3. Go through the changelog (or migration guide) of each updated dependency, and make code changes as needed.
|
|
11
|
-
4. Make sure all checks pass (scripts like lint, format, test, etc)
|
|
12
|
-
5. Commit, and push the changes to the remote repository.
|
|
13
|
-
6. Use `gh api repos/{owner}/{repo}/commits/{ref}/check-runs` to verify all CI/CD checks pass. This works for both GitHub Actions workflows and external integrations (e.g., Cloudflare Workers Builds, Vercel, Netlify).
|
|
14
|
-
7. Write a summary for the updated dependencies so I can learn about the changes, new features, and breaking changes.
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: swift-concurrency-expert
|
|
3
|
-
description: Swift Concurrency review and remediation for Swift 6.2+. Use when asked to review Swift Concurrency usage, improve concurrency compliance, or fix Swift concurrency compiler errors in a feature or file.
|
|
4
|
-
metadata:
|
|
5
|
-
author: dimillian
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Swift Concurrency Expert
|
|
9
|
-
|
|
10
|
-
## Overview
|
|
11
|
-
|
|
12
|
-
Review and fix Swift Concurrency issues in Swift 6.2+ codebases by applying actor isolation, Sendable safety, and modern concurrency patterns with minimal behavior changes.
|
|
13
|
-
|
|
14
|
-
## Workflow
|
|
15
|
-
|
|
16
|
-
### 1. Triage the issue
|
|
17
|
-
|
|
18
|
-
- Capture the exact compiler diagnostics and the offending symbol(s).
|
|
19
|
-
- Check project concurrency settings: Swift language version (6.2+), strict concurrency level, and whether approachable concurrency (default actor isolation / main-actor-by-default) is enabled.
|
|
20
|
-
- Identify the current actor context (`@MainActor`, `actor`, `nonisolated`) and whether a default actor isolation mode is enabled.
|
|
21
|
-
- Confirm whether the code is UI-bound or intended to run off the main actor.
|
|
22
|
-
|
|
23
|
-
### 2. Apply the smallest safe fix
|
|
24
|
-
|
|
25
|
-
Prefer edits that preserve existing behavior while satisfying data-race safety.
|
|
26
|
-
|
|
27
|
-
Common fixes:
|
|
28
|
-
- **UI-bound types**: annotate the type or relevant members with `@MainActor`.
|
|
29
|
-
- **Protocol conformance on main actor types**: make the conformance isolated (e.g., `extension Foo: @MainActor SomeProtocol`).
|
|
30
|
-
- **Global/static state**: protect with `@MainActor` or move into an actor.
|
|
31
|
-
- **Background work**: move expensive work into a `@concurrent` async function on a `nonisolated` type or use an `actor` to guard mutable state.
|
|
32
|
-
- **Sendable errors**: prefer immutable/value types; add `Sendable` conformance only when correct; avoid `@unchecked Sendable` unless you can prove thread safety.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Reference material
|
|
36
|
-
|
|
37
|
-
- See `references/swift-6-2-concurrency.md` for Swift 6.2 changes, patterns, and examples.
|
|
38
|
-
- See `references/approachable-concurrency.md` when the project is opted into approachable concurrency mode.
|
|
39
|
-
- See `references/swiftui-concurrency-tour-wwdc.md` for SwiftUI-specific concurrency guidance.
|
package/dotfiles/agents/skills/swift-concurrency-expert/references/approachable-concurrency.md
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
## Approachable Concurrency (Swift 6.2) - project mode quick guide
|
|
2
|
-
|
|
3
|
-
Use this reference when the project has opted into the Swift 6.2 approachable
|
|
4
|
-
concurrency settings (default actor isolation / main-actor-by-default).
|
|
5
|
-
|
|
6
|
-
## Detect the mode
|
|
7
|
-
|
|
8
|
-
Check Xcode build settings under "Swift Compiler - Concurrency":
|
|
9
|
-
- Swift language version (must be 6.2+).
|
|
10
|
-
- Default actor isolation / Main Actor by default.
|
|
11
|
-
- Strict concurrency checking level (Complete/Targeted/Minimal).
|
|
12
|
-
|
|
13
|
-
For SwiftPM, inspect Package.swift swiftSettings for the same flags.
|
|
14
|
-
|
|
15
|
-
## Behavior changes to expect
|
|
16
|
-
|
|
17
|
-
- Async functions stay on the caller's actor by default; they don't hop to a
|
|
18
|
-
global concurrent executor unless the implementation chooses to.
|
|
19
|
-
- Main-actor-by-default reduces data race errors for UI-bound code and global
|
|
20
|
-
state, because mutable state is implicitly protected.
|
|
21
|
-
- Protocol conformances can be isolated (e.g., `extension Foo: @MainActor Bar`).
|
|
22
|
-
|
|
23
|
-
## How to apply fixes in this mode
|
|
24
|
-
|
|
25
|
-
- Prefer minimal annotations; let main-actor-by-default do the work when the
|
|
26
|
-
code is UI-bound.
|
|
27
|
-
- Use isolated conformances instead of forcing `nonisolated` workarounds.
|
|
28
|
-
- Keep global or shared mutable state on the main actor unless there is a clear
|
|
29
|
-
performance need to offload it.
|
|
30
|
-
|
|
31
|
-
## When to opt out or offload work
|
|
32
|
-
|
|
33
|
-
- Use `@concurrent` on async functions that must run on the concurrent pool.
|
|
34
|
-
- Make types or members `nonisolated` only when they are truly thread-safe and
|
|
35
|
-
used off the main actor.
|
|
36
|
-
- Continue to respect Sendable boundaries when values cross actors or tasks.
|
|
37
|
-
|
|
38
|
-
## Common pitfalls
|
|
39
|
-
|
|
40
|
-
- `Task.detached` ignores inherited actor context; avoid it unless you truly
|
|
41
|
-
need to break isolation.
|
|
42
|
-
- Main-actor-by-default can hide performance issues if CPU-heavy work stays on
|
|
43
|
-
the main actor; move that work into `@concurrent` async functions.
|
|
44
|
-
|
|
45
|
-
## Keywords (from source cheat sheet)
|
|
46
|
-
|
|
47
|
-
| Keyword | What it does |
|
|
48
|
-
| --- | --- |
|
|
49
|
-
| `async` | Function can pause |
|
|
50
|
-
| `await` | Pause here until done |
|
|
51
|
-
| `Task { }` | Start async work, inherits context |
|
|
52
|
-
| `Task.detached { }` | Start async work, no inherited context |
|
|
53
|
-
| `@MainActor` | Runs on main thread |
|
|
54
|
-
| `actor` | Type with isolated mutable state |
|
|
55
|
-
| `nonisolated` | Opts out of actor isolation |
|
|
56
|
-
| `Sendable` | Safe to pass between isolation domains |
|
|
57
|
-
| `@concurrent` | Always run on background (Swift 6.2+) |
|
|
58
|
-
| `async let` | Start parallel work |
|
|
59
|
-
| `TaskGroup` | Dynamic parallel work |
|
|
60
|
-
|
|
61
|
-
## Source
|
|
62
|
-
|
|
63
|
-
https://fuckingapproachableswiftconcurrency.com/en/
|