pondorasti 0.1.37 → 0.1.39

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.
Files changed (50) hide show
  1. package/Brewfile +6 -1
  2. package/dotfiles/claude/settings.json +3 -5
  3. package/dotfiles/git/.gitconfig +5 -0
  4. package/package.json +1 -1
  5. package/src/tools/dotfiles.ts +0 -2
  6. package/dotfiles/agents/AGENTS.md +0 -59
  7. package/dotfiles/agents/skills/create-cli/SKILL.md +0 -95
  8. package/dotfiles/agents/skills/create-cli/references/cli-guidelines.md +0 -239
  9. package/dotfiles/agents/skills/learn/SKILL.md +0 -45
  10. package/dotfiles/agents/skills/ncu/SKILL.md +0 -14
  11. package/dotfiles/agents/skills/swift-concurrency-expert/SKILL.md +0 -39
  12. package/dotfiles/agents/skills/swift-concurrency-expert/references/approachable-concurrency.md +0 -63
  13. package/dotfiles/agents/skills/swift-concurrency-expert/references/swift-6-2-concurrency.md +0 -272
  14. package/dotfiles/agents/skills/swift-concurrency-expert/references/swiftui-concurrency-tour-wwdc.md +0 -33
  15. package/dotfiles/agents/skills/swiftui-liquid-glass/SKILL.md +0 -92
  16. package/dotfiles/agents/skills/swiftui-liquid-glass/references/liquid-glass.md +0 -280
  17. package/dotfiles/agents/skills/swiftui-performance-audit/SKILL.md +0 -189
  18. package/dotfiles/agents/skills/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +0 -46
  19. package/dotfiles/agents/skills/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +0 -29
  20. package/dotfiles/agents/skills/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +0 -33
  21. package/dotfiles/agents/skills/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +0 -52
  22. package/dotfiles/agents/skills/swiftui-ui-patterns/SKILL.md +0 -97
  23. package/dotfiles/agents/skills/swiftui-ui-patterns/references/app-wiring.md +0 -194
  24. package/dotfiles/agents/skills/swiftui-ui-patterns/references/components-index.md +0 -43
  25. package/dotfiles/agents/skills/swiftui-ui-patterns/references/controls.md +0 -57
  26. package/dotfiles/agents/skills/swiftui-ui-patterns/references/deeplinks.md +0 -66
  27. package/dotfiles/agents/skills/swiftui-ui-patterns/references/focus.md +0 -90
  28. package/dotfiles/agents/skills/swiftui-ui-patterns/references/form.md +0 -97
  29. package/dotfiles/agents/skills/swiftui-ui-patterns/references/grids.md +0 -71
  30. package/dotfiles/agents/skills/swiftui-ui-patterns/references/haptics.md +0 -71
  31. package/dotfiles/agents/skills/swiftui-ui-patterns/references/input-toolbar.md +0 -51
  32. package/dotfiles/agents/skills/swiftui-ui-patterns/references/lightweight-clients.md +0 -93
  33. package/dotfiles/agents/skills/swiftui-ui-patterns/references/list.md +0 -86
  34. package/dotfiles/agents/skills/swiftui-ui-patterns/references/loading-placeholders.md +0 -38
  35. package/dotfiles/agents/skills/swiftui-ui-patterns/references/macos-settings.md +0 -71
  36. package/dotfiles/agents/skills/swiftui-ui-patterns/references/matched-transitions.md +0 -59
  37. package/dotfiles/agents/skills/swiftui-ui-patterns/references/media.md +0 -73
  38. package/dotfiles/agents/skills/swiftui-ui-patterns/references/menu-bar.md +0 -101
  39. package/dotfiles/agents/skills/swiftui-ui-patterns/references/navigationstack.md +0 -159
  40. package/dotfiles/agents/skills/swiftui-ui-patterns/references/overlay.md +0 -45
  41. package/dotfiles/agents/skills/swiftui-ui-patterns/references/scrollview.md +0 -87
  42. package/dotfiles/agents/skills/swiftui-ui-patterns/references/searchable.md +0 -71
  43. package/dotfiles/agents/skills/swiftui-ui-patterns/references/sheets.md +0 -113
  44. package/dotfiles/agents/skills/swiftui-ui-patterns/references/split-views.md +0 -72
  45. package/dotfiles/agents/skills/swiftui-ui-patterns/references/tabview.md +0 -114
  46. package/dotfiles/agents/skills/swiftui-ui-patterns/references/theming.md +0 -71
  47. package/dotfiles/agents/skills/swiftui-ui-patterns/references/title-menus.md +0 -93
  48. package/dotfiles/agents/skills/swiftui-ui-patterns/references/top-bar.md +0 -49
  49. package/dotfiles/agents/skills/swiftui-view-refactor/SKILL.md +0 -138
  50. 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-linear" # Modern project management and issue tracking for product teams
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
- "skipDangerousModePermissionPrompt": true
8
+ "effortLevel": "high",
9
+ "skipDangerousModePermissionPrompt": true,
10
+ "fastMode": true
13
11
  }
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pondorasti",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "CLI for pondorasti",
5
5
  "author": "Alexandru Ţurcanu",
6
6
  "license": "MIT",
@@ -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.
@@ -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/