@olegkoval/agent-skills 1.8.0 → 1.9.1

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 (72) hide show
  1. package/.claude-plugin/plugin.json +4 -2
  2. package/.cursor-plugin/index.json +10 -0
  3. package/.kiro/steering/obsidian-pr-sync.md +137 -0
  4. package/.kiro/steering/obsidian-task-rollover.md +180 -0
  5. package/.windsurf/rules/obsidian-pr-sync.md +136 -0
  6. package/.windsurf/rules/obsidian-task-rollover.md +179 -0
  7. package/README.md +4 -2
  8. package/catalog/skills.json +44 -0
  9. package/package.json +1 -1
  10. package/packages/marketing/search-console-indexing-audit/SKILL.md +1 -0
  11. package/packages/marketing/search-console-indexing-audit/adapters/claude/skills/search-console-indexing-audit/SKILL.md +1 -0
  12. package/packages/marketing/search-console-indexing-audit/adapters/cursor/skills/search-console-indexing-audit/SKILL.md +1 -0
  13. package/packages/marketing/viral-launch/SKILL.md +1 -0
  14. package/packages/marketing/viral-launch/adapters/claude/skills/viral-launch/SKILL.md +1 -0
  15. package/packages/marketing/viral-launch/adapters/cursor/skills/viral-launch/SKILL.md +1 -0
  16. package/packages/music/fill-music-player/SKILL.md +1 -0
  17. package/packages/music/fill-music-player/adapters/claude/skills/fill-music-player/SKILL.md +1 -0
  18. package/packages/music/fill-music-player/adapters/cursor/skills/fill-music-player/SKILL.md +1 -0
  19. package/packages/photography/gallery/SKILL.md +1 -0
  20. package/packages/photography/gallery/adapters/claude/skills/gallery/SKILL.md +1 -0
  21. package/packages/photography/gallery/adapters/cursor/skills/gallery/SKILL.md +1 -0
  22. package/packages/software-development/add-to-my-skills/SKILL.md +1 -0
  23. package/packages/software-development/add-to-my-skills/adapters/claude/skills/add-to-my-skills/SKILL.md +1 -0
  24. package/packages/software-development/add-to-my-skills/adapters/cursor/skills/add-to-my-skills/SKILL.md +1 -0
  25. package/packages/software-development/ai-tools-setup/SKILL.md +1 -0
  26. package/packages/software-development/ai-tools-setup/adapters/claude/skills/ai-tools-setup/SKILL.md +1 -0
  27. package/packages/software-development/ai-tools-setup/adapters/cursor/skills/ai-tools-setup/SKILL.md +1 -0
  28. package/packages/software-development/changelog-generator/SKILL.md +1 -0
  29. package/packages/software-development/changelog-generator/adapters/claude/skills/changelog-generator/SKILL.md +1 -0
  30. package/packages/software-development/changelog-generator/adapters/cursor/skills/changelog-generator/SKILL.md +1 -0
  31. package/packages/software-development/cloudflare-block-countries/SKILL.md +1 -0
  32. package/packages/software-development/cloudflare-block-countries/adapters/claude/skills/cloudflare-block-countries/SKILL.md +1 -0
  33. package/packages/software-development/cloudflare-block-countries/adapters/cursor/skills/cloudflare-block-countries/SKILL.md +1 -0
  34. package/packages/software-development/docs-index-keeper/SKILL.md +1 -0
  35. package/packages/software-development/docs-index-keeper/adapters/claude/skills/docs-index-keeper/SKILL.md +1 -0
  36. package/packages/software-development/docs-index-keeper/adapters/cursor/skills/docs-index-keeper/SKILL.md +1 -0
  37. package/packages/software-development/gh-cli/SKILL.md +1 -0
  38. package/packages/software-development/gh-cli/adapters/claude/skills/gh-cli/SKILL.md +1 -0
  39. package/packages/software-development/gh-cli/adapters/cursor/skills/gh-cli/SKILL.md +1 -0
  40. package/packages/software-development/git-commit/SKILL.md +1 -0
  41. package/packages/software-development/git-commit/adapters/claude/skills/git-commit/SKILL.md +1 -0
  42. package/packages/software-development/git-commit/adapters/cursor/skills/git-commit/SKILL.md +1 -0
  43. package/packages/software-development/obsidian-pr-sync/SKILL.md +152 -0
  44. package/packages/software-development/obsidian-pr-sync/adapters/claude/plugin.json +5 -0
  45. package/packages/software-development/obsidian-pr-sync/adapters/claude/skills/obsidian-pr-sync/SKILL.md +155 -0
  46. package/packages/software-development/obsidian-pr-sync/adapters/cursor/plugin.json +6 -0
  47. package/packages/software-development/obsidian-pr-sync/adapters/cursor/skills/obsidian-pr-sync/SKILL.md +155 -0
  48. package/packages/software-development/obsidian-pr-sync/adapters/kiro/steering/obsidian-pr-sync.md +137 -0
  49. package/packages/software-development/obsidian-pr-sync/adapters/windsurf/rules/obsidian-pr-sync.md +136 -0
  50. package/packages/software-development/obsidian-task-rollover/SKILL.md +196 -0
  51. package/packages/software-development/obsidian-task-rollover/adapters/claude/plugin.json +5 -0
  52. package/packages/software-development/obsidian-task-rollover/adapters/claude/skills/obsidian-task-rollover/SKILL.md +199 -0
  53. package/packages/software-development/obsidian-task-rollover/adapters/cursor/plugin.json +6 -0
  54. package/packages/software-development/obsidian-task-rollover/adapters/cursor/skills/obsidian-task-rollover/SKILL.md +199 -0
  55. package/packages/software-development/obsidian-task-rollover/adapters/kiro/steering/obsidian-task-rollover.md +180 -0
  56. package/packages/software-development/obsidian-task-rollover/adapters/windsurf/rules/obsidian-task-rollover.md +179 -0
  57. package/packages/software-development/open-source-publisher/SKILL.md +1 -0
  58. package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +1 -0
  59. package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +1 -0
  60. package/packages/software-development/product-builder/SKILL.md +1 -0
  61. package/packages/software-development/product-builder/adapters/claude/skills/product-builder/SKILL.md +1 -0
  62. package/packages/software-development/product-builder/adapters/cursor/skills/product-builder/SKILL.md +1 -0
  63. package/packages/software-development/promptctl/SKILL.md +1 -0
  64. package/packages/software-development/promptctl/adapters/claude/skills/promptctl/SKILL.md +1 -0
  65. package/packages/software-development/promptctl/adapters/cursor/skills/promptctl/SKILL.md +1 -0
  66. package/packages/software-development/semantic-release-beta/SKILL.md +1 -0
  67. package/packages/software-development/semantic-release-beta/adapters/claude/skills/semantic-release-beta/SKILL.md +1 -0
  68. package/packages/software-development/semantic-release-beta/adapters/cursor/skills/semantic-release-beta/SKILL.md +1 -0
  69. package/packages/software-development/starter-rules/SKILL.md +1 -0
  70. package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +1 -0
  71. package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +1 -0
  72. package/scripts/build-adapters.sh +11 -2
@@ -0,0 +1,180 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ inclusion: manual
5
+ description: "Bullet-journal end-of-day task migration: copy unchecked tasks from today's Obsidian daily note to the next workday's note under '## Carried over', and mark them [>] in the source. Skips weekends, idempotent."
6
+ ---
7
+
8
+
9
+ # Obsidian Task Rollover
10
+
11
+ Bullet-journal–style end-of-day task migration. Unfinished tasks (`- [ ]`) from
12
+ today's note get copied forward to the next workday, and marked as migrated in
13
+ today's note.
14
+
15
+ ## Configuration
16
+
17
+ - `VAULT_DAILY` — absolute path to the daily notes folder (e.g. `/Users/you/obsidian/vault/Lead/Daily`)
18
+
19
+ If not specified, infer from context or ask.
20
+
21
+ ## Step 1 — Identify source note
22
+
23
+ Default source = **today's note**. If the user specifies a date ("roll over Monday's
24
+ tasks"), resolve that date instead.
25
+
26
+ ```bash
27
+ SOURCE_DATE=$(date +%Y-%m-%d)
28
+ SOURCE="${VAULT_DAILY}/${SOURCE_DATE}.md"
29
+ ```
30
+
31
+ If the source note doesn't exist, report and stop — nothing to migrate.
32
+
33
+ ## Step 2 — Find next workday
34
+
35
+ ```bash
36
+ TARGET_DATE=$(python3 -c "
37
+ from datetime import date, timedelta
38
+ d = date.fromisoformat('${SOURCE_DATE}') + timedelta(days=1)
39
+ while d.weekday() >= 5: # 5=Sat, 6=Sun
40
+ d += timedelta(days=1)
41
+ print(d)
42
+ ")
43
+ TARGET="${VAULT_DAILY}/${TARGET_DATE}.md"
44
+ ```
45
+
46
+ Skips weekends. If today is Friday, tasks roll to Monday.
47
+
48
+ ## Step 3 — Extract incomplete tasks
49
+
50
+ Read the source note and collect all lines matching `- [ ] ` that are:
51
+ - **Not** inside the `## PRs to review` section (that section is auto-managed by
52
+ the `obsidian-pr-sync` skill — don't touch it)
53
+ - **Not** already migrated (`- [>]` lines — idempotency guard)
54
+
55
+ Sections to skip entirely: `## PRs to review`. Stop collecting at the nav footer
56
+ (`*← [[...`).
57
+
58
+ Collect both the task lines and which section (h2 heading) they belong to, so the
59
+ target note can group them the same way.
60
+
61
+ ## Step 4 — Mark tasks as migrated in source note
62
+
63
+ For each collected task line in the source note, replace:
64
+ ```
65
+ - [ ] some task
66
+ ```
67
+ with:
68
+ ```
69
+ - [>] some task → [[Lead/Daily/TARGET_DATE|TARGET_DATE]]
70
+ ```
71
+
72
+ The `[>]` is the bullet journal migration arrow — "moved forward". The link lets you
73
+ jump to where the task landed.
74
+
75
+ **Do not** replace tasks that are already checked (`- [x]`) or already migrated
76
+ (`- [>`). Only unticked `- [ ]` tasks.
77
+
78
+ ## Step 5 — Write to target note
79
+
80
+ ### If the target note exists
81
+
82
+ Check whether a `## Carried over` section already exists:
83
+ - If yes: **replace** its content (idempotent — re-running a migration is safe)
84
+ - If no: **insert** it before the nav footer line (`*← [[...`) or at end of file
85
+
86
+ ### If the target note doesn't exist
87
+
88
+ Create it using the standard daily note template:
89
+ ```markdown
90
+ ---
91
+ type: daily
92
+ date: TARGET_DATE
93
+ tags: [lead/daily]
94
+ ---
95
+
96
+ # WEEKDAY, D MMM YYYY
97
+
98
+ ## Top 3 for today
99
+ 1.
100
+ 2.
101
+ 3.
102
+
103
+ ## People check-in
104
+ > Who needs something from me today?
105
+
106
+ - [[]]
107
+
108
+ ## Notes / journal
109
+
110
+
111
+ ## Open loops
112
+ > Things I started but didn't finish
113
+
114
+ -
115
+
116
+ ## Actions
117
+ - [ ]
118
+
119
+ ---
120
+ *← [[Lead/Daily/SOURCE_DATE|Yesterday]] | [[Lead/Daily/NEXT_NEXT_DATE|Tomorrow]] →*
121
+ ```
122
+ Then append the `## Carried over` section.
123
+
124
+ ### Carried over section format
125
+
126
+ ```markdown
127
+ ## Carried over
128
+
129
+ > Migrated from [[Lead/Daily/SOURCE_DATE|SOURCE_DATE]]
130
+
131
+ ### SECTION_NAME (if tasks came from a named section)
132
+ - [ ] task text ↩ [[Lead/Daily/SOURCE_DATE|SOURCE_DATE]]
133
+
134
+ ### Actions (if tasks came from ## Actions)
135
+ - [ ] another task ↩ [[Lead/Daily/SOURCE_DATE|SOURCE_DATE]]
136
+ ```
137
+
138
+ Rules:
139
+ - Group tasks by the section they came from in the source note
140
+ - If all tasks are from `## Actions`, omit the subsection header (keep it flat)
141
+ - The `↩` link back to the source date lets you trace where the task originated
142
+
143
+ ## Step 6 — Report
144
+
145
+ ```
146
+ Rolled over N tasks from SOURCE_DATE → TARGET_DATE
147
+ From ## Actions: X tasks
148
+ From ## Open loops: Y tasks
149
+ Marked [>] in: Lead/Daily/SOURCE_DATE.md
150
+ Written to: Lead/Daily/TARGET_DATE.md
151
+ ```
152
+
153
+ If there are zero incomplete tasks, report:
154
+ ```
155
+ No incomplete tasks in SOURCE_DATE — nothing to roll over ✓
156
+ ```
157
+
158
+ ## Invocation patterns
159
+
160
+ **Manual:**
161
+ - "roll over today's tasks to tomorrow"
162
+ - "migrate my open tasks, it's end of day"
163
+ - "carry forward unfinished items from today"
164
+
165
+ **Scheduled (end-of-day or start-of-morning):**
166
+ Runs silently. Picks up today's note automatically.
167
+
168
+ **In a remote CCR agent:**
169
+ Clone the vault repo, run the rollover, commit and push. The local Obsidian Git
170
+ plugin pulls the changes automatically.
171
+
172
+ ## Edge cases
173
+
174
+ - **Tasks with sub-bullets**: Copy the full block (task + its indented children)
175
+ - **Duplicate migration**: Re-running replaces the `## Carried over` section — never
176
+ duplicates. Tasks already marked `[>]` in source are not re-processed.
177
+ - **Friday → Monday**: The weekend-skip logic handles this. The Monday note is created
178
+ if it doesn't exist.
179
+ - **Task already in target**: No dedup check — if you manually added the same task to
180
+ tomorrow and then run migration, it'll appear twice. Acceptable — easy to clean up.
@@ -0,0 +1,179 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ description: "Bullet-journal end-of-day task migration: copy unchecked tasks from today's Obsidian daily note to the next workday's note under '## Carried over', and mark them [>] in the source. Skips weekends, idempotent."
5
+ ---
6
+
7
+
8
+ # Obsidian Task Rollover
9
+
10
+ Bullet-journal–style end-of-day task migration. Unfinished tasks (`- [ ]`) from
11
+ today's note get copied forward to the next workday, and marked as migrated in
12
+ today's note.
13
+
14
+ ## Configuration
15
+
16
+ - `VAULT_DAILY` — absolute path to the daily notes folder (e.g. `/Users/you/obsidian/vault/Lead/Daily`)
17
+
18
+ If not specified, infer from context or ask.
19
+
20
+ ## Step 1 — Identify source note
21
+
22
+ Default source = **today's note**. If the user specifies a date ("roll over Monday's
23
+ tasks"), resolve that date instead.
24
+
25
+ ```bash
26
+ SOURCE_DATE=$(date +%Y-%m-%d)
27
+ SOURCE="${VAULT_DAILY}/${SOURCE_DATE}.md"
28
+ ```
29
+
30
+ If the source note doesn't exist, report and stop — nothing to migrate.
31
+
32
+ ## Step 2 — Find next workday
33
+
34
+ ```bash
35
+ TARGET_DATE=$(python3 -c "
36
+ from datetime import date, timedelta
37
+ d = date.fromisoformat('${SOURCE_DATE}') + timedelta(days=1)
38
+ while d.weekday() >= 5: # 5=Sat, 6=Sun
39
+ d += timedelta(days=1)
40
+ print(d)
41
+ ")
42
+ TARGET="${VAULT_DAILY}/${TARGET_DATE}.md"
43
+ ```
44
+
45
+ Skips weekends. If today is Friday, tasks roll to Monday.
46
+
47
+ ## Step 3 — Extract incomplete tasks
48
+
49
+ Read the source note and collect all lines matching `- [ ] ` that are:
50
+ - **Not** inside the `## PRs to review` section (that section is auto-managed by
51
+ the `obsidian-pr-sync` skill — don't touch it)
52
+ - **Not** already migrated (`- [>]` lines — idempotency guard)
53
+
54
+ Sections to skip entirely: `## PRs to review`. Stop collecting at the nav footer
55
+ (`*← [[...`).
56
+
57
+ Collect both the task lines and which section (h2 heading) they belong to, so the
58
+ target note can group them the same way.
59
+
60
+ ## Step 4 — Mark tasks as migrated in source note
61
+
62
+ For each collected task line in the source note, replace:
63
+ ```
64
+ - [ ] some task
65
+ ```
66
+ with:
67
+ ```
68
+ - [>] some task → [[Lead/Daily/TARGET_DATE|TARGET_DATE]]
69
+ ```
70
+
71
+ The `[>]` is the bullet journal migration arrow — "moved forward". The link lets you
72
+ jump to where the task landed.
73
+
74
+ **Do not** replace tasks that are already checked (`- [x]`) or already migrated
75
+ (`- [>`). Only unticked `- [ ]` tasks.
76
+
77
+ ## Step 5 — Write to target note
78
+
79
+ ### If the target note exists
80
+
81
+ Check whether a `## Carried over` section already exists:
82
+ - If yes: **replace** its content (idempotent — re-running a migration is safe)
83
+ - If no: **insert** it before the nav footer line (`*← [[...`) or at end of file
84
+
85
+ ### If the target note doesn't exist
86
+
87
+ Create it using the standard daily note template:
88
+ ```markdown
89
+ ---
90
+ type: daily
91
+ date: TARGET_DATE
92
+ tags: [lead/daily]
93
+ ---
94
+
95
+ # WEEKDAY, D MMM YYYY
96
+
97
+ ## Top 3 for today
98
+ 1.
99
+ 2.
100
+ 3.
101
+
102
+ ## People check-in
103
+ > Who needs something from me today?
104
+
105
+ - [[]]
106
+
107
+ ## Notes / journal
108
+
109
+
110
+ ## Open loops
111
+ > Things I started but didn't finish
112
+
113
+ -
114
+
115
+ ## Actions
116
+ - [ ]
117
+
118
+ ---
119
+ *← [[Lead/Daily/SOURCE_DATE|Yesterday]] | [[Lead/Daily/NEXT_NEXT_DATE|Tomorrow]] →*
120
+ ```
121
+ Then append the `## Carried over` section.
122
+
123
+ ### Carried over section format
124
+
125
+ ```markdown
126
+ ## Carried over
127
+
128
+ > Migrated from [[Lead/Daily/SOURCE_DATE|SOURCE_DATE]]
129
+
130
+ ### SECTION_NAME (if tasks came from a named section)
131
+ - [ ] task text ↩ [[Lead/Daily/SOURCE_DATE|SOURCE_DATE]]
132
+
133
+ ### Actions (if tasks came from ## Actions)
134
+ - [ ] another task ↩ [[Lead/Daily/SOURCE_DATE|SOURCE_DATE]]
135
+ ```
136
+
137
+ Rules:
138
+ - Group tasks by the section they came from in the source note
139
+ - If all tasks are from `## Actions`, omit the subsection header (keep it flat)
140
+ - The `↩` link back to the source date lets you trace where the task originated
141
+
142
+ ## Step 6 — Report
143
+
144
+ ```
145
+ Rolled over N tasks from SOURCE_DATE → TARGET_DATE
146
+ From ## Actions: X tasks
147
+ From ## Open loops: Y tasks
148
+ Marked [>] in: Lead/Daily/SOURCE_DATE.md
149
+ Written to: Lead/Daily/TARGET_DATE.md
150
+ ```
151
+
152
+ If there are zero incomplete tasks, report:
153
+ ```
154
+ No incomplete tasks in SOURCE_DATE — nothing to roll over ✓
155
+ ```
156
+
157
+ ## Invocation patterns
158
+
159
+ **Manual:**
160
+ - "roll over today's tasks to tomorrow"
161
+ - "migrate my open tasks, it's end of day"
162
+ - "carry forward unfinished items from today"
163
+
164
+ **Scheduled (end-of-day or start-of-morning):**
165
+ Runs silently. Picks up today's note automatically.
166
+
167
+ **In a remote CCR agent:**
168
+ Clone the vault repo, run the rollover, commit and push. The local Obsidian Git
169
+ plugin pulls the changes automatically.
170
+
171
+ ## Edge cases
172
+
173
+ - **Tasks with sub-bullets**: Copy the full block (task + its indented children)
174
+ - **Duplicate migration**: Re-running replaces the `## Carried over` section — never
175
+ duplicates. Tasks already marked `[>]` in source are not re-processed.
176
+ - **Friday → Monday**: The weekend-skip logic handles this. The Monday note is created
177
+ if it doesn't exist.
178
+ - **Task already in target**: No dedup check — if you manually added the same task to
179
+ tomorrow and then run migration, it'll appear twice. Acceptable — easy to clean up.
@@ -5,6 +5,7 @@ license: MIT
5
5
  allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
6
6
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable git repository; browser or image rendering tools are useful for visual validation.
7
7
  metadata:
8
+ targets: [_source-only]
8
9
  author: Oleg Koval
9
10
  tags:
10
11
  - open-source
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable git repository; browser or image rendering tools are useful for visual validation.
9
9
  metadata:
10
+ targets: ["claude"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - open-source
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable git repository; browser or image rendering tools are useful for visual validation.
9
9
  metadata:
10
+ targets: ["cursor"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - open-source
@@ -5,6 +5,7 @@ license: MIT
5
5
  allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
6
6
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable application repository and a stack compatible with the generated implementation.
7
7
  metadata:
8
+ targets: [_source-only]
8
9
  author: Oleg Koval
9
10
  tags:
10
11
  - product
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable application repository and a stack compatible with the generated implementation.
9
9
  metadata:
10
+ targets: ["claude"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - product
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable application repository and a stack compatible with the generated implementation.
9
9
  metadata:
10
+ targets: ["cursor"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - product
@@ -5,6 +5,7 @@ license: MIT
5
5
  allowed-tools: Bash, Read, Write
6
6
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires promptctl to be installed when the workflow depends on the CLI.
7
7
  metadata:
8
+ targets: [_source-only]
8
9
  author: Oleg Koval
9
10
  tags:
10
11
  - prompts
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires promptctl to be installed when the workflow depends on the CLI.
9
9
  metadata:
10
+ targets: ["claude"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - prompts
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires promptctl to be installed when the workflow depends on the CLI.
9
9
  metadata:
10
+ targets: ["cursor"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - prompts
@@ -5,6 +5,7 @@ license: MIT
5
5
  allowed-tools: Bash, Read, Write, Edit
6
6
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a Node.js package repository that uses git and GitHub Actions.
7
7
  metadata:
8
+ targets: [_source-only]
8
9
  author: Oleg Koval
9
10
  tags:
10
11
  - semantic-release
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write, Edit
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a Node.js package repository that uses git and GitHub Actions.
9
9
  metadata:
10
+ targets: ["claude"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - semantic-release
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Bash, Read, Write, Edit
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a Node.js package repository that uses git and GitHub Actions.
9
9
  metadata:
10
+ targets: ["cursor"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - semantic-release
@@ -5,6 +5,7 @@ license: MIT
5
5
  allowed-tools: Read, Bash
6
6
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools.
7
7
  metadata:
8
+ targets: [_source-only]
8
9
  author: Oleg Koval
9
10
  tags:
10
11
  - starters
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Read, Bash
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools.
9
9
  metadata:
10
+ targets: ["claude"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - starters
@@ -7,6 +7,7 @@ license: MIT
7
7
  allowed-tools: Read, Bash
8
8
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools.
9
9
  metadata:
10
+ targets: ["cursor"]
10
11
  author: Oleg Koval
11
12
  tags:
12
13
  - starters
@@ -16,6 +16,15 @@ const skillPathFor = (pkg) => path.join(root, pkg.path, 'SKILL.md')
16
16
  const promptNameFor = (pkg) => `${pkg.name}.prompt.md`
17
17
  const generatedHeader = '<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->'
18
18
  const stripFrontmatter = (content) => content.replace(/^---\n[\s\S]*?\n---\n?/, '')
19
+ const injectTargets = (content, targets) => {
20
+ const targetsYaml = targets.length > 0
21
+ ? ` targets: [${targets.map(t => JSON.stringify(t)).join(', ')}]`
22
+ : ' targets: []'
23
+ if (/^ targets:/m.test(content)) {
24
+ return content.replace(/^ targets:.*$/m, targetsYaml)
25
+ }
26
+ return content.replace(/^(metadata:)$/m, `$1\n${targetsYaml}`)
27
+ }
19
28
  const stripTrailingLineWhitespace = (content) => content.replace(/[ \t]+$/gm, '')
20
29
  const copySkillResources = (pkg, destDir) => {
21
30
  for (const resourceDir of ['scripts']) {
@@ -200,7 +209,7 @@ for (const pkg of catalog.packages) {
200
209
  2,
201
210
  ) + '\n',
202
211
  )
203
- fs.writeFileSync(path.join(claudeDestDir, 'SKILL.md'), [generatedHeader, '', canonical, ''].join('\n'))
212
+ fs.writeFileSync(path.join(claudeDestDir, 'SKILL.md'), [generatedHeader, '', injectTargets(canonical, ['claude']), ''].join('\n'))
204
213
  copySkillResources(pkg, claudeDestDir)
205
214
  }
206
215
 
@@ -221,7 +230,7 @@ for (const pkg of catalog.packages) {
221
230
  2,
222
231
  ) + '\n',
223
232
  )
224
- fs.writeFileSync(path.join(destDir, 'SKILL.md'), [generatedHeader, '', canonical, ''].join('\n'))
233
+ fs.writeFileSync(path.join(destDir, 'SKILL.md'), [generatedHeader, '', injectTargets(canonical, ['cursor']), ''].join('\n'))
225
234
  copySkillResources(pkg, destDir)
226
235
  }
227
236