pondorasti 0.1.36 → 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 +8 -2
- package/dotfiles/claude/settings.json +4 -5
- package/dotfiles/cursor/settings.json +2 -2
- package/dotfiles/git/.gitconfig +5 -0
- package/dotfiles/nvim/lazy-lock.json +10 -10
- package/dotfiles/opencode/opencode.json +4 -0
- package/dotfiles/zsh/.zshrc +3 -0
- package/package.json +2 -2
- package/src/tools/dotfiles.ts +2 -2
- package/src/utils/github.test.ts +28 -0
- package/src/utils/github.ts +44 -13
- 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/rams/SKILL.md +0 -111
- 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,7 +4,9 @@ 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
|
|
9
|
+
brew "colima" # Docker-compatible container runtime for macOS using Lima
|
|
8
10
|
cask "orbstack" # Fast, lightweight Docker & Linux VM runtime for macOS
|
|
9
11
|
brew "lazydocker" # Terminal UI for Docker - manage containers, images, and volumes easily
|
|
10
12
|
brew "neovim" # Hyperextensible Vim-based text editor - modern fork with better plugin support
|
|
@@ -13,12 +15,16 @@ brew "tmux" # Terminal multiplexer - multiple term
|
|
|
13
15
|
brew "pnpm" # Fast, disk space efficient package manager for Node.js
|
|
14
16
|
brew "oven-sh/bun/bun" # Fast all-in-one JavaScript runtime, bundler, test runner, and package manager
|
|
15
17
|
brew "node" # JavaScript runtime built on Chrome's V8 JavaScript engine
|
|
18
|
+
brew "vite-plus" # Unified web development toolchain - provides vp
|
|
16
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
|
|
17
21
|
brew "rbenv" # Ruby version manager - simple, lightweight Ruby environment manager
|
|
18
22
|
brew "stripe/stripe-cli/stripe" # Stripe CLI for testing and managing Stripe resources
|
|
19
23
|
brew "supabase" # Supabase CLI for local development and deployment
|
|
20
24
|
brew "flyctl" # Fly.io CLI for app deployment and infrastructure management
|
|
25
|
+
brew "cloudflare-wrangler" # Cloudflare Wrangler CLI for Workers development and deployment
|
|
21
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
|
|
22
28
|
brew "anomalyco/tap/opencode" # Open source code editor/IDE
|
|
23
29
|
|
|
24
30
|
# System Monitoring
|
|
@@ -44,8 +50,8 @@ cask "cursor" # AI-powered code editor built to make
|
|
|
44
50
|
cask "zed" # High-performance code editor designed for collaboration with humans and AI
|
|
45
51
|
cask "claude" # Claude AI assistant desktop application
|
|
46
52
|
cask "claude-code" # Claude AI coding assistant for the terminal
|
|
47
|
-
cask "clawdbot" # Personal AI assistant with menu bar control and voice wake
|
|
48
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
|
|
49
55
|
cask "opencode-desktop" # Desktop app for OpenCode AI coding assistant
|
|
50
56
|
cask "android-studio" # Official IDE for Android app development
|
|
51
57
|
cask "tableplus" # Modern, native database management tool
|
|
@@ -58,7 +64,7 @@ cask "851-labs/tap/gardenbridge" # Drag and drop content between Mac an
|
|
|
58
64
|
cask "1password" # Password manager and secure wallet
|
|
59
65
|
cask "1password-cli" # 1Password CLI for scripting and automation
|
|
60
66
|
cask "cleanshot" # Advanced screenshot and screen recording tool
|
|
61
|
-
cask "linear
|
|
67
|
+
cask "linear" # Modern project management and issue tracking for product teams
|
|
62
68
|
cask "notion" # All-in-one workspace for notes, docs, and collaboration
|
|
63
69
|
cask "notion-calendar" # Calendar app integrated with Notion
|
|
64
70
|
|
|
@@ -1,12 +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
|
+
},
|
|
8
|
+
"effortLevel": "high",
|
|
9
|
+
"skipDangerousModePermissionPrompt": true,
|
|
10
|
+
"fastMode": true
|
|
12
11
|
}
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
"workbench.colorTheme": "Default Dark Modern",
|
|
26
26
|
"workbench.preferredDarkColorTheme": "Default Dark Modern",
|
|
27
27
|
"workbench.preferredLightColorTheme": "Default Light Modern",
|
|
28
|
-
"workbench.sideBar.location": "right",
|
|
29
28
|
"workbench.tree.enableStickyScroll": true,
|
|
30
29
|
|
|
31
30
|
"terminal.integrated.fontFamily": "MesloLGS Nerd Font Mono",
|
|
@@ -51,5 +50,6 @@
|
|
|
51
50
|
},
|
|
52
51
|
"cursor.cpp.disabledLanguages": [
|
|
53
52
|
"plaintext"
|
|
54
|
-
]
|
|
53
|
+
],
|
|
54
|
+
"workbench.sideBar.location": "right"
|
|
55
55
|
}
|
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
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" },
|
|
3
|
-
"blink.cmp": { "branch": "main", "commit": "
|
|
3
|
+
"blink.cmp": { "branch": "main", "commit": "4b18c32adef2898f95cdef6192cbd5796c1a332d" },
|
|
4
4
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
|
5
|
-
"catppuccin": { "branch": "main", "commit": "
|
|
5
|
+
"catppuccin": { "branch": "main", "commit": "0a5de4da015a175f416d6ef1eda84661623e0500" },
|
|
6
6
|
"conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
|
|
7
7
|
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
|
8
8
|
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
|
9
|
-
"gitsigns.nvim": { "branch": "main", "commit": "
|
|
9
|
+
"gitsigns.nvim": { "branch": "main", "commit": "9f3c6dd7868bcc116e9c1c1929ce063b978fa519" },
|
|
10
10
|
"grug-far.nvim": { "branch": "main", "commit": "275dbedc96e61a6b8d1dfb28ba51586ddd233dcf" },
|
|
11
11
|
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
|
12
12
|
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
|
13
13
|
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
|
14
|
-
"mason-lspconfig.nvim": { "branch": "main", "commit": "
|
|
14
|
+
"mason-lspconfig.nvim": { "branch": "main", "commit": "21c2a84ce368e99b18f52ab348c4c02c32c02fcf" },
|
|
15
15
|
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
|
|
16
|
-
"mini.ai": { "branch": "main", "commit": "
|
|
17
|
-
"mini.icons": { "branch": "main", "commit": "
|
|
16
|
+
"mini.ai": { "branch": "main", "commit": "b0247752cf629ce7c6bd0a1efd82fb58ff60f9d6" },
|
|
17
|
+
"mini.icons": { "branch": "main", "commit": "68c178e0958d95b3977a771f3445429b1bded985" },
|
|
18
18
|
"mini.pairs": { "branch": "main", "commit": "4089aa6ea6423e02e1a8326a7a7a00159f6f5e04" },
|
|
19
19
|
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
|
20
20
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
|
21
|
-
"nvim-lint": { "branch": "master", "commit": "
|
|
22
|
-
"nvim-lspconfig": { "branch": "master", "commit": "
|
|
23
|
-
"nvim-treesitter": { "branch": "main", "commit": "
|
|
21
|
+
"nvim-lint": { "branch": "master", "commit": "486474c2ace8d78d28995074dbdbe29011bc63d0" },
|
|
22
|
+
"nvim-lspconfig": { "branch": "master", "commit": "44acfe887d4056f704ccc4f17513ed41c9e2b2e6" },
|
|
23
|
+
"nvim-treesitter": { "branch": "main", "commit": "ecdae44baefeffceade8b0c752d80ececad28e76" },
|
|
24
24
|
"nvim-treesitter-textobjects": { "branch": "main", "commit": "a0e182ae21fda68c59d1f36c9ed45600aef50311" },
|
|
25
|
-
"nvim-ts-autotag": { "branch": "main", "commit": "
|
|
25
|
+
"nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" },
|
|
26
26
|
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
|
27
27
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
|
28
28
|
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
|
package/dotfiles/zsh/.zshrc
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pondorasti",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.38",
|
|
4
4
|
"description": "CLI for pondorasti",
|
|
5
5
|
"author": "Alexandru Ţurcanu",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"build:sign": "codesign --deep --force --sign - --entitlements entitlements.plist dist/pd"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"ink": "^6.
|
|
34
|
+
"ink": "^6.8.0",
|
|
35
35
|
"ink-gradient": "^4.0.0",
|
|
36
36
|
"ink-spinner": "^5.0.0",
|
|
37
37
|
"react": "^19.2.4",
|
package/src/tools/dotfiles.ts
CHANGED
|
@@ -11,15 +11,15 @@ enum DotfilesPackage {
|
|
|
11
11
|
Zsh = "zsh",
|
|
12
12
|
Cursor = "cursor",
|
|
13
13
|
Claude = "claude",
|
|
14
|
-
Agents = "agents",
|
|
15
14
|
Nvim = "nvim",
|
|
15
|
+
Opencode = "opencode",
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
const PACKAGE_TARGET_PATHS: Partial<Record<DotfilesPackage, string>> = {
|
|
19
19
|
[DotfilesPackage.Cursor]: "~/Library/Application Support/Cursor/User",
|
|
20
20
|
[DotfilesPackage.Claude]: "~/.claude",
|
|
21
|
-
[DotfilesPackage.Agents]: "~/.claude", // OpenCode also reads from ~/.claude/skills/
|
|
22
21
|
[DotfilesPackage.Nvim]: "~/.config/nvim",
|
|
22
|
+
[DotfilesPackage.Opencode]: "~/.config/opencode",
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
function isDotfilesPackage(value: string): value is DotfilesPackage {
|
package/src/utils/github.test.ts
CHANGED
|
@@ -51,6 +51,13 @@ describe("parseGitHubUrl", () => {
|
|
|
51
51
|
})
|
|
52
52
|
})
|
|
53
53
|
|
|
54
|
+
test("parses commits URLs", () => {
|
|
55
|
+
expect(parseGitHubUrl("https://github.com/owner/repo/commits/main/")).toEqual({
|
|
56
|
+
owner: "owner",
|
|
57
|
+
repo: "repo",
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
|
|
54
61
|
test("parses blob URLs (file paths)", () => {
|
|
55
62
|
expect(parseGitHubUrl("https://github.com/owner/repo/blob/main/file.ts")).toEqual({
|
|
56
63
|
owner: "owner",
|
|
@@ -65,6 +72,13 @@ describe("parseGitHubUrl", () => {
|
|
|
65
72
|
})
|
|
66
73
|
})
|
|
67
74
|
|
|
75
|
+
test("parses other GitHub subpages", () => {
|
|
76
|
+
expect(parseGitHubUrl("https://github.com/owner/repo/pull/123/files")).toEqual({
|
|
77
|
+
owner: "owner",
|
|
78
|
+
repo: "repo",
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
|
|
68
82
|
test("handles trailing slashes", () => {
|
|
69
83
|
expect(parseGitHubUrl("https://github.com/owner/repo/")).toEqual({
|
|
70
84
|
owner: "owner",
|
|
@@ -79,6 +93,20 @@ describe("parseGitHubUrl", () => {
|
|
|
79
93
|
})
|
|
80
94
|
})
|
|
81
95
|
|
|
96
|
+
test("handles query params and hash fragments", () => {
|
|
97
|
+
expect(parseGitHubUrl("https://github.com/owner/repo?tab=readme-ov-file#top")).toEqual({
|
|
98
|
+
owner: "owner",
|
|
99
|
+
repo: "repo",
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
test("parses github.com URLs without protocol", () => {
|
|
104
|
+
expect(parseGitHubUrl("github.com/owner/repo/issues/1")).toEqual({
|
|
105
|
+
owner: "owner",
|
|
106
|
+
repo: "repo",
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
|
|
82
110
|
test("returns null for invalid URLs", () => {
|
|
83
111
|
expect(parseGitHubUrl("not-a-valid-url")).toBeNull()
|
|
84
112
|
})
|
package/src/utils/github.ts
CHANGED
|
@@ -1,20 +1,51 @@
|
|
|
1
1
|
export const parseGitHubUrl = (url: string): { owner: string; repo: string } | null => {
|
|
2
|
-
const normalized = url.trim()
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const normalized = url.trim()
|
|
3
|
+
if (!normalized) {
|
|
4
|
+
return null
|
|
5
|
+
}
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const toResult = (owner: string | undefined, repo: string | undefined) => {
|
|
8
|
+
if (!owner || !repo) {
|
|
9
|
+
return null
|
|
10
|
+
}
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return { owner: match[1], repo: match[2] }
|
|
12
|
+
const cleanRepo = repo.replace(/\.git$/i, "")
|
|
13
|
+
if (!cleanRepo) {
|
|
14
|
+
return null
|
|
16
15
|
}
|
|
16
|
+
|
|
17
|
+
return { owner, repo: cleanRepo }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Handles owner/repo (with optional trailing slash)
|
|
21
|
+
const shortMatch = normalized.match(/^([^/:?#\s]+)\/([^/?#]+?)(?:\.git)?\/?$/)
|
|
22
|
+
if (shortMatch) {
|
|
23
|
+
return toResult(shortMatch[1], shortMatch[2])
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Handles git@github.com:owner/repo(.git)
|
|
27
|
+
const sshMatch = normalized.match(/^git@github\.com:([^/]+)\/([^/?#]+?)(?:\.git)?\/?$/i)
|
|
28
|
+
if (sshMatch) {
|
|
29
|
+
return toResult(sshMatch[1], sshMatch[2])
|
|
17
30
|
}
|
|
18
31
|
|
|
19
|
-
|
|
32
|
+
// Allows github.com/owner/repo without protocol
|
|
33
|
+
const urlCandidate = normalized.match(/^github\.com\//i) ? `https://${normalized}` : normalized
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const parsed = new URL(urlCandidate)
|
|
37
|
+
const host = parsed.hostname.toLowerCase()
|
|
38
|
+
if (host !== "github.com" && host !== "www.github.com") {
|
|
39
|
+
return null
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const segments = parsed.pathname.split("/").filter(Boolean)
|
|
43
|
+
if (segments.length < 2) {
|
|
44
|
+
return null
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return toResult(segments[0], segments[1])
|
|
48
|
+
} catch {
|
|
49
|
+
return null
|
|
50
|
+
}
|
|
20
51
|
}
|
|
@@ -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.
|