@framers/agentos-skills 0.2.0 → 0.2.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.
- package/README.md +58 -94
- package/dist/SkillLoader.d.ts +50 -0
- package/dist/SkillLoader.d.ts.map +1 -0
- package/dist/SkillLoader.js +291 -0
- package/dist/SkillLoader.js.map +1 -0
- package/dist/SkillRegistry.d.ts +135 -0
- package/dist/SkillRegistry.d.ts.map +1 -0
- package/dist/SkillRegistry.js +455 -0
- package/dist/SkillRegistry.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +35 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +71 -0
- package/dist/paths.js.map +1 -0
- package/dist/types.d.ts +231 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +21 -0
- package/dist/types.js.map +1 -0
- package/package.json +34 -16
- package/registry/community/.gitkeep +0 -0
- package/registry/curated/1password/SKILL.md +0 -53
- package/registry/curated/apple-notes/SKILL.md +0 -45
- package/registry/curated/apple-reminders/SKILL.md +0 -46
- package/registry/curated/coding-agent/SKILL.md +0 -40
- package/registry/curated/discord-helper/SKILL.md +0 -43
- package/registry/curated/git/SKILL.md +0 -39
- package/registry/curated/github/SKILL.md +0 -54
- package/registry/curated/healthcheck/SKILL.md +0 -43
- package/registry/curated/image-gen/SKILL.md +0 -44
- package/registry/curated/notion/SKILL.md +0 -43
- package/registry/curated/obsidian/SKILL.md +0 -42
- package/registry/curated/slack-helper/SKILL.md +0 -42
- package/registry/curated/spotify-player/SKILL.md +0 -44
- package/registry/curated/summarize/SKILL.md +0 -40
- package/registry/curated/trello/SKILL.md +0 -43
- package/registry/curated/weather/SKILL.md +0 -37
- package/registry/curated/whisper-transcribe/SKILL.md +0 -58
- package/registry.json +0 -363
- package/types.d.ts +0 -77
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skills Runtime Types for AgentOS
|
|
3
|
+
* @module @framers/agentos-skills/types
|
|
4
|
+
*
|
|
5
|
+
* Skills are modular capabilities defined in SKILL.md files with
|
|
6
|
+
* YAML frontmatter specifying metadata, requirements, and install specs.
|
|
7
|
+
*
|
|
8
|
+
* This module is adapted from the Wunderland/OpenClaw skills system.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Supported package manager/installation methods.
|
|
12
|
+
*/
|
|
13
|
+
export type SkillInstallKind = 'brew' | 'apt' | 'node' | 'go' | 'uv' | 'download';
|
|
14
|
+
/**
|
|
15
|
+
* Installation specification for a skill dependency.
|
|
16
|
+
*/
|
|
17
|
+
export interface SkillInstallSpec {
|
|
18
|
+
/** Unique identifier for this install spec */
|
|
19
|
+
id?: string;
|
|
20
|
+
/** Installation method */
|
|
21
|
+
kind: SkillInstallKind;
|
|
22
|
+
/** Human-readable label */
|
|
23
|
+
label?: string;
|
|
24
|
+
/** Binary names that should exist after install */
|
|
25
|
+
bins?: string[];
|
|
26
|
+
/** Limit to specific OS platforms */
|
|
27
|
+
os?: readonly string[];
|
|
28
|
+
/** Homebrew formula name */
|
|
29
|
+
formula?: string;
|
|
30
|
+
/** Package name (apt package, npm package, uv tool package) */
|
|
31
|
+
package?: string;
|
|
32
|
+
/** Go module spec for `go install` (e.g. `golang.org/x/tools/cmd/goimports@latest`) */
|
|
33
|
+
module?: string;
|
|
34
|
+
/** Download URL */
|
|
35
|
+
url?: string;
|
|
36
|
+
/** Archive filename for extraction */
|
|
37
|
+
archive?: string;
|
|
38
|
+
/** Whether to extract the archive */
|
|
39
|
+
extract?: boolean;
|
|
40
|
+
/** Number of path components to strip during extraction */
|
|
41
|
+
stripComponents?: number;
|
|
42
|
+
/** Target directory for extracted files */
|
|
43
|
+
targetDir?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Requirements for a skill to be eligible.
|
|
47
|
+
*/
|
|
48
|
+
export interface SkillRequirements {
|
|
49
|
+
/** All of these binaries must be available */
|
|
50
|
+
bins?: string[];
|
|
51
|
+
/** At least one of these binaries must be available */
|
|
52
|
+
anyBins?: string[];
|
|
53
|
+
/** Required environment variables */
|
|
54
|
+
env?: string[];
|
|
55
|
+
/** Required config paths */
|
|
56
|
+
config?: string[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Skill metadata from SKILL.md frontmatter.
|
|
60
|
+
*/
|
|
61
|
+
export interface SkillMetadata {
|
|
62
|
+
/** Always include this skill regardless of requirements */
|
|
63
|
+
always?: boolean;
|
|
64
|
+
/** Override skill key (default: folder name) */
|
|
65
|
+
skillKey?: string;
|
|
66
|
+
/** Primary environment variable for this skill */
|
|
67
|
+
primaryEnv?: string;
|
|
68
|
+
/** Emoji for display */
|
|
69
|
+
emoji?: string;
|
|
70
|
+
/** Homepage URL */
|
|
71
|
+
homepage?: string;
|
|
72
|
+
/** Limit to specific OS platforms */
|
|
73
|
+
os?: readonly string[];
|
|
74
|
+
/** Requirements for eligibility */
|
|
75
|
+
requires?: SkillRequirements;
|
|
76
|
+
/** Installation specifications */
|
|
77
|
+
install?: SkillInstallSpec[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Policy controlling how a skill can be invoked.
|
|
81
|
+
*/
|
|
82
|
+
export interface SkillInvocationPolicy {
|
|
83
|
+
/** Whether users can invoke directly via commands */
|
|
84
|
+
userInvocable: boolean;
|
|
85
|
+
/** Whether to disable LLM model invocation */
|
|
86
|
+
disableModelInvocation: boolean;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Dispatch specification for skill commands.
|
|
90
|
+
*/
|
|
91
|
+
export interface SkillCommandDispatch {
|
|
92
|
+
/** Dispatch kind (tool invocation) */
|
|
93
|
+
kind: 'tool';
|
|
94
|
+
/** Name of the tool to invoke */
|
|
95
|
+
toolName: string;
|
|
96
|
+
/** How to forward user-provided args */
|
|
97
|
+
argMode?: 'raw';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Command specification for a skill.
|
|
101
|
+
*/
|
|
102
|
+
export interface SkillCommandSpec {
|
|
103
|
+
/** Command name (e.g., "/github") */
|
|
104
|
+
name: string;
|
|
105
|
+
/** Parent skill name */
|
|
106
|
+
skillName: string;
|
|
107
|
+
/** Command description */
|
|
108
|
+
description: string;
|
|
109
|
+
/** Optional dispatch behavior */
|
|
110
|
+
dispatch?: SkillCommandDispatch;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Raw skill definition with name and content.
|
|
114
|
+
*/
|
|
115
|
+
export interface Skill {
|
|
116
|
+
/** Unique skill name (folder name) */
|
|
117
|
+
name: string;
|
|
118
|
+
/** Skill description from frontmatter or first paragraph */
|
|
119
|
+
description: string;
|
|
120
|
+
/** Full SKILL.md content (after frontmatter) */
|
|
121
|
+
content: string;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Parsed SKILL.md frontmatter.
|
|
125
|
+
*/
|
|
126
|
+
export type ParsedSkillFrontmatter = Record<string, unknown>;
|
|
127
|
+
/**
|
|
128
|
+
* Complete skill entry with all metadata.
|
|
129
|
+
*/
|
|
130
|
+
export interface SkillEntry {
|
|
131
|
+
/** Core skill data */
|
|
132
|
+
skill: Skill;
|
|
133
|
+
/** Raw frontmatter values */
|
|
134
|
+
frontmatter: ParsedSkillFrontmatter;
|
|
135
|
+
/** Parsed AgentOS/Wunderland/OpenClaw metadata */
|
|
136
|
+
metadata?: SkillMetadata;
|
|
137
|
+
/** Invocation policy */
|
|
138
|
+
invocation?: SkillInvocationPolicy;
|
|
139
|
+
/** Source directory path */
|
|
140
|
+
sourcePath?: string;
|
|
141
|
+
/** Optional source tag indicating where the skill was loaded from (e.g., "bundled", "workspace"). */
|
|
142
|
+
source?: string;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Context for evaluating skill eligibility.
|
|
146
|
+
*/
|
|
147
|
+
export interface SkillEligibilityContext {
|
|
148
|
+
/** Current platform(s) */
|
|
149
|
+
platforms: string[];
|
|
150
|
+
/** Check if a binary is available */
|
|
151
|
+
hasBin: (bin: string) => boolean;
|
|
152
|
+
/** Check if any of the binaries are available */
|
|
153
|
+
hasAnyBin: (bins: string[]) => boolean;
|
|
154
|
+
/** Check if an environment variable is set */
|
|
155
|
+
hasEnv?: (envVar: string) => boolean;
|
|
156
|
+
/** Additional note for filtering */
|
|
157
|
+
note?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Snapshot of skills for agent context.
|
|
161
|
+
*/
|
|
162
|
+
export interface SkillSnapshot {
|
|
163
|
+
/** Formatted prompt text for LLM */
|
|
164
|
+
prompt: string;
|
|
165
|
+
/** List of included skills with names */
|
|
166
|
+
skills: Array<{
|
|
167
|
+
name: string;
|
|
168
|
+
primaryEnv?: string;
|
|
169
|
+
}>;
|
|
170
|
+
/** Resolved skills */
|
|
171
|
+
resolvedSkills?: Skill[];
|
|
172
|
+
/** Snapshot version */
|
|
173
|
+
version?: number;
|
|
174
|
+
/** Created timestamp */
|
|
175
|
+
createdAt: Date;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Configuration for skill loading.
|
|
179
|
+
*/
|
|
180
|
+
export interface SkillsLoadConfig {
|
|
181
|
+
/** Additional skill directories to scan */
|
|
182
|
+
extraDirs?: string[];
|
|
183
|
+
/** Watch for changes */
|
|
184
|
+
watch?: boolean;
|
|
185
|
+
/** Debounce for watcher (ms) */
|
|
186
|
+
watchDebounceMs?: number;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Install preferences for skills.
|
|
190
|
+
*/
|
|
191
|
+
export interface SkillsInstallPreferences {
|
|
192
|
+
/** Prefer Homebrew when available */
|
|
193
|
+
preferBrew: boolean;
|
|
194
|
+
/** Node package manager to use */
|
|
195
|
+
nodeManager: 'npm' | 'pnpm' | 'yarn' | 'bun';
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Per-skill configuration.
|
|
199
|
+
*/
|
|
200
|
+
export interface SkillConfig {
|
|
201
|
+
/** Whether the skill is enabled */
|
|
202
|
+
enabled?: boolean;
|
|
203
|
+
/** API key for the skill */
|
|
204
|
+
apiKey?: string;
|
|
205
|
+
/** Environment variable overrides */
|
|
206
|
+
env?: Record<string, string>;
|
|
207
|
+
/** Additional configuration */
|
|
208
|
+
config?: Record<string, unknown>;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Top-level skills configuration.
|
|
212
|
+
*/
|
|
213
|
+
export interface SkillsConfig {
|
|
214
|
+
/** Allowlist for bundled skills */
|
|
215
|
+
allowBundled?: string[];
|
|
216
|
+
/** Loading configuration */
|
|
217
|
+
load?: SkillsLoadConfig;
|
|
218
|
+
/** Install preferences */
|
|
219
|
+
install?: SkillsInstallPreferences;
|
|
220
|
+
/** Per-skill configurations */
|
|
221
|
+
entries?: Record<string, SkillConfig>;
|
|
222
|
+
}
|
|
223
|
+
/** Maximum length for skill command names */
|
|
224
|
+
export declare const SKILL_COMMAND_MAX_LENGTH = 32;
|
|
225
|
+
/** Fallback command name */
|
|
226
|
+
export declare const SKILL_COMMAND_FALLBACK = "skill";
|
|
227
|
+
/** Maximum length for skill command descriptions (Discord limit) */
|
|
228
|
+
export declare const SKILL_COMMAND_DESCRIPTION_MAX_LENGTH = 100;
|
|
229
|
+
/** Default snapshot version */
|
|
230
|
+
export declare const DEFAULT_SNAPSHOT_VERSION = 1;
|
|
231
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skills Runtime Types for AgentOS
|
|
3
|
+
* @module @framers/agentos-skills/types
|
|
4
|
+
*
|
|
5
|
+
* Skills are modular capabilities defined in SKILL.md files with
|
|
6
|
+
* YAML frontmatter specifying metadata, requirements, and install specs.
|
|
7
|
+
*
|
|
8
|
+
* This module is adapted from the Wunderland/OpenClaw skills system.
|
|
9
|
+
*/
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// CONSTANTS
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/** Maximum length for skill command names */
|
|
14
|
+
export const SKILL_COMMAND_MAX_LENGTH = 32;
|
|
15
|
+
/** Fallback command name */
|
|
16
|
+
export const SKILL_COMMAND_FALLBACK = 'skill';
|
|
17
|
+
/** Maximum length for skill command descriptions (Discord limit) */
|
|
18
|
+
export const SKILL_COMMAND_DESCRIPTION_MAX_LENGTH = 100;
|
|
19
|
+
/** Default snapshot version */
|
|
20
|
+
export const DEFAULT_SNAPSHOT_VERSION = 1;
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgTH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,4BAA4B;AAC5B,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAE9C,oEAAoE;AACpE,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,+BAA+B;AAC/B,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos-skills",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Skills runtime for AgentOS — loads, parses, and manages SKILL.md prompt modules",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
7
9
|
"exports": {
|
|
8
10
|
".": {
|
|
9
|
-
"import": "./
|
|
10
|
-
"types": "./
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
11
13
|
},
|
|
12
|
-
"./registry.json": "./registry.json",
|
|
13
14
|
"./package.json": "./package.json"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
|
16
|
-
"
|
|
17
|
-
"registry.json",
|
|
18
|
-
"types.d.ts",
|
|
17
|
+
"dist",
|
|
19
18
|
"README.md"
|
|
20
19
|
],
|
|
21
|
-
"scripts": {
|
|
22
|
-
"validate": "node scripts/validate-skill.mjs"
|
|
23
|
-
},
|
|
24
|
-
"publishConfig": {
|
|
25
|
-
"access": "public"
|
|
26
|
-
},
|
|
27
20
|
"keywords": [
|
|
28
21
|
"agentos",
|
|
29
22
|
"skills",
|
|
30
|
-
"
|
|
23
|
+
"runtime",
|
|
24
|
+
"skill-loader",
|
|
25
|
+
"skill-registry",
|
|
31
26
|
"prompts"
|
|
32
27
|
],
|
|
33
28
|
"author": {
|
|
@@ -39,5 +34,28 @@
|
|
|
39
34
|
"repository": {
|
|
40
35
|
"type": "git",
|
|
41
36
|
"url": "https://github.com/framersai/agentos-skills.git"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"yaml": "^2.8.1"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^20.12.12",
|
|
46
|
+
"typescript": "^5.4.5"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"@framers/agentos": ">=0.1.0"
|
|
50
|
+
},
|
|
51
|
+
"peerDependenciesMeta": {
|
|
52
|
+
"@framers/agentos": {
|
|
53
|
+
"optional": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "tsc -p tsconfig.json",
|
|
58
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
59
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
42
60
|
}
|
|
43
|
-
}
|
|
61
|
+
}
|
|
File without changes
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 1password
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Query and retrieve items from 1Password vaults using the 1Password CLI for secure credential access.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: security
|
|
8
|
-
tags: [1password, passwords, secrets, vault, credentials, security]
|
|
9
|
-
requires_secrets: []
|
|
10
|
-
requires_tools: []
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: "\uD83D\uDD10"
|
|
14
|
-
primaryEnv: OP_SERVICE_ACCOUNT_TOKEN
|
|
15
|
-
homepage: https://developer.1password.com/docs/cli
|
|
16
|
-
requires:
|
|
17
|
-
bins: ['op']
|
|
18
|
-
install:
|
|
19
|
-
- id: brew
|
|
20
|
-
kind: brew
|
|
21
|
-
formula: 1password-cli
|
|
22
|
-
bins: ['op']
|
|
23
|
-
label: 'Install 1Password CLI (brew)'
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
# 1Password Vault Queries
|
|
27
|
-
|
|
28
|
-
You can query 1Password vaults to retrieve credentials, secure notes, API keys, and other secrets using the `op` CLI. This enables secure access to stored credentials without hardcoding secrets in code or configuration files.
|
|
29
|
-
|
|
30
|
-
When retrieving items, use `op item get` with the item name or UUID. Support querying specific fields (username, password, TOTP, custom fields) using the `--fields` flag. For listing items, filter by vault, category (login, secure-note, api-credential, credit-card), or tags. Always use the most specific identifier available to avoid ambiguous matches.
|
|
31
|
-
|
|
32
|
-
For security, never display full passwords or secret values in plain text unless the user explicitly requests it. Instead, confirm the item exists and describe its metadata (title, vault, category, last modified). When injecting secrets into environment variables or configuration files, use `op run` or `op inject` for ephemeral secret injection that avoids writing secrets to disk.
|
|
33
|
-
|
|
34
|
-
Support common workflows like looking up API keys for service integrations, retrieving database credentials for connection strings, and checking TOTP codes for two-factor authentication. When multiple items match a query, present a disambiguated list with vault and category context so the user can select the correct one.
|
|
35
|
-
|
|
36
|
-
## Examples
|
|
37
|
-
|
|
38
|
-
- "Look up the API key for our Stripe integration"
|
|
39
|
-
- "What vaults do I have access to?"
|
|
40
|
-
- "Get the database connection credentials from the Production vault"
|
|
41
|
-
- "Generate a TOTP code for my AWS account"
|
|
42
|
-
- "List all items tagged 'deploy' in the DevOps vault"
|
|
43
|
-
- "Inject secrets from the 'staging-env' item into environment variables"
|
|
44
|
-
|
|
45
|
-
## Constraints
|
|
46
|
-
|
|
47
|
-
- Requires the `op` CLI to be installed and authenticated (service account token or interactive sign-in).
|
|
48
|
-
- The agent can only access vaults and items that the authenticated account has permissions for.
|
|
49
|
-
- Biometric unlock is not available in non-interactive CLI sessions; use service account tokens.
|
|
50
|
-
- TOTP codes are time-sensitive and expire every 30 seconds.
|
|
51
|
-
- Cannot create, modify, or delete vault items -- read-only access for security.
|
|
52
|
-
- Session tokens expire after 30 minutes of inactivity by default.
|
|
53
|
-
- Do not log, cache, or persist retrieved secret values beyond the immediate use.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: apple-notes
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Create, read, search, and manage notes in Apple Notes using AppleScript and macOS automation.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: productivity
|
|
8
|
-
tags: [apple-notes, macos, notes, applescript, automation]
|
|
9
|
-
requires_secrets: []
|
|
10
|
-
requires_tools: [filesystem]
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: "\uD83D\uDCF1"
|
|
14
|
-
os: ['darwin']
|
|
15
|
-
requires:
|
|
16
|
-
bins: ['osascript']
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# Apple Notes Integration
|
|
20
|
-
|
|
21
|
-
You can create, read, search, and manage notes in Apple Notes on macOS using AppleScript commands executed via `osascript`. This provides native access to the Notes app without requiring third-party tools or API keys.
|
|
22
|
-
|
|
23
|
-
When creating notes, use `osascript` to invoke AppleScript that creates note entries with title and body text. Notes support basic HTML formatting for bold, italic, lists, and headings. Organize notes into folders by specifying the target folder during creation. If a folder does not exist, create it first before adding notes to it.
|
|
24
|
-
|
|
25
|
-
For reading and searching notes, query the Notes app for notes matching specific titles, body content, or folder locations. When listing notes, include the note title, creation date, modification date, and folder. For search operations, match against both title and body text. Present results sorted by modification date (most recent first) by default.
|
|
26
|
-
|
|
27
|
-
When modifying existing notes, append content to the end of the note body unless the user specifies a different location. Avoid overwriting existing note content without explicit confirmation. Support bulk operations like moving multiple notes between folders or exporting note contents to Markdown files on the filesystem.
|
|
28
|
-
|
|
29
|
-
## Examples
|
|
30
|
-
|
|
31
|
-
- "Create a new note titled 'Meeting Notes - Feb 7' in my Work folder"
|
|
32
|
-
- "Search my notes for anything about 'quarterly review'"
|
|
33
|
-
- "List all notes in the Ideas folder sorted by date"
|
|
34
|
-
- "Append today's action items to my 'Running Tasks' note"
|
|
35
|
-
- "Export all notes from the Research folder to Markdown files"
|
|
36
|
-
|
|
37
|
-
## Constraints
|
|
38
|
-
|
|
39
|
-
- macOS only -- requires the Apple Notes app and `osascript` binary.
|
|
40
|
-
- AppleScript access to Notes may require accessibility permissions to be granted.
|
|
41
|
-
- Rich formatting is limited to basic HTML supported by Notes (bold, italic, lists, links).
|
|
42
|
-
- Embedded images and attachments in notes cannot be read or created via AppleScript.
|
|
43
|
-
- iCloud-synced notes are accessible but sync timing is controlled by the system.
|
|
44
|
-
- Large notes (100KB+) may experience slow AppleScript operations.
|
|
45
|
-
- Notes in locked/password-protected folders cannot be accessed via automation.
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: apple-reminders
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Create, manage, and query reminders and lists in Apple Reminders using AppleScript and macOS automation.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: productivity
|
|
8
|
-
tags: [apple-reminders, macos, reminders, tasks, applescript, automation]
|
|
9
|
-
requires_secrets: []
|
|
10
|
-
requires_tools: [filesystem]
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: "\u2705"
|
|
14
|
-
os: ['darwin']
|
|
15
|
-
requires:
|
|
16
|
-
bins: ['osascript']
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# Apple Reminders Integration
|
|
20
|
-
|
|
21
|
-
You can create, manage, complete, and query reminders in Apple Reminders on macOS using AppleScript commands executed via `osascript`. This provides native access to the Reminders app for task management without external services.
|
|
22
|
-
|
|
23
|
-
When creating reminders, specify the title, due date, priority (0=none, 1-4=high, 5=medium, 6-9=low), and target list. If the user does not specify a list, use the default reminders list. Support creating reminders with notes/body text for additional context. For recurring reminders, set the recurrence rule (daily, weekly, monthly) when supported.
|
|
24
|
-
|
|
25
|
-
For querying reminders, list items by list name, completion status, due date range, or priority level. Present results in a clear format showing title, due date, priority, and completion status. Support filtering incomplete reminders that are overdue. When showing upcoming reminders, sort by due date ascending.
|
|
26
|
-
|
|
27
|
-
When managing reminders, support completing items (marking as done), updating due dates, changing priorities, moving between lists, and deleting items. For bulk operations, process items efficiently and report results. Create new reminder lists when the user requests organizing tasks into new categories.
|
|
28
|
-
|
|
29
|
-
## Examples
|
|
30
|
-
|
|
31
|
-
- "Create a reminder to 'Call dentist' tomorrow at 2pm in my Personal list"
|
|
32
|
-
- "Show me all overdue reminders"
|
|
33
|
-
- "Mark the 'Submit report' reminder as complete"
|
|
34
|
-
- "List all reminders due this week sorted by priority"
|
|
35
|
-
- "Create a new list called 'Home Renovation' and add 5 tasks to it"
|
|
36
|
-
- "Move all high-priority reminders from Inbox to the Urgent list"
|
|
37
|
-
|
|
38
|
-
## Constraints
|
|
39
|
-
|
|
40
|
-
- macOS only -- requires the Apple Reminders app and `osascript` binary.
|
|
41
|
-
- AppleScript access to Reminders may require accessibility permissions.
|
|
42
|
-
- Location-based reminders cannot be created via AppleScript.
|
|
43
|
-
- Sub-tasks (nested reminders) have limited AppleScript support.
|
|
44
|
-
- iCloud-synced reminders are accessible but sync timing is system-controlled.
|
|
45
|
-
- Attachments and images on reminders cannot be managed via automation.
|
|
46
|
-
- Completed reminders may be automatically hidden based on the user's Reminders app settings.
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: coding-agent
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Write, review, debug, refactor, and explain code across multiple programming languages and frameworks.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: developer-tools
|
|
8
|
-
tags: [coding, programming, code-review, debugging, refactoring, development]
|
|
9
|
-
requires_secrets: []
|
|
10
|
-
requires_tools: [filesystem]
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: "\uD83D\uDCBB"
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# Code Writing and Review Agent
|
|
17
|
-
|
|
18
|
-
You are a skilled software developer capable of writing, reviewing, debugging, refactoring, and explaining code across a wide range of programming languages and frameworks. Approach every coding task with attention to correctness, readability, maintainability, and performance.
|
|
19
|
-
|
|
20
|
-
When writing code, always follow the conventions of the target language and framework. Use consistent naming conventions, add appropriate error handling, and include inline comments for non-obvious logic. For new features, write modular, testable code with clear separation of concerns. Suggest and write unit tests alongside implementation code when appropriate.
|
|
21
|
-
|
|
22
|
-
For code review, analyze code for bugs, security vulnerabilities, performance issues, and style inconsistencies. Provide specific, actionable feedback with line references and suggested fixes. Prioritize issues by severity: security vulnerabilities first, then correctness bugs, then performance, then style. Explain the reasoning behind each suggestion.
|
|
23
|
-
|
|
24
|
-
When debugging, systematically narrow down the root cause by analyzing error messages, stack traces, and code flow. Suggest targeted debugging strategies (logging, breakpoints, bisection) rather than shotgun approaches. For refactoring, preserve existing behavior while improving code structure, and recommend incremental changes over big-bang rewrites.
|
|
25
|
-
|
|
26
|
-
## Examples
|
|
27
|
-
|
|
28
|
-
- "Write a TypeScript function to debounce API calls with a configurable delay"
|
|
29
|
-
- "Review this PR for security issues and suggest improvements"
|
|
30
|
-
- "Debug why this React component re-renders on every keystroke"
|
|
31
|
-
- "Refactor this 200-line function into smaller, testable units"
|
|
32
|
-
- "Explain how this recursive algorithm works step by step"
|
|
33
|
-
|
|
34
|
-
## Constraints
|
|
35
|
-
|
|
36
|
-
- Always test suggestions mentally for edge cases before presenting them.
|
|
37
|
-
- Do not introduce dependencies without explaining why they are necessary.
|
|
38
|
-
- Respect existing code style and conventions in the project.
|
|
39
|
-
- For security-sensitive code (auth, crypto, input validation), err on the side of caution and recommend established libraries over custom implementations.
|
|
40
|
-
- Large refactors should be broken into reviewable increments.
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: discord-helper
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Manage Discord servers, channels, roles, and messages through the Discord API.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: communication
|
|
8
|
-
tags: [discord, messaging, server, moderation, community]
|
|
9
|
-
requires_secrets: [discord.bot_token]
|
|
10
|
-
requires_tools: []
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: "\uD83C\uDFAE"
|
|
14
|
-
primaryEnv: DISCORD_BOT_TOKEN
|
|
15
|
-
homepage: https://discord.com/developers
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# Discord Server Helper
|
|
19
|
-
|
|
20
|
-
You can interact with Discord servers (guilds) to send messages, manage channels, assign roles, moderate content, and handle events. Use the Discord API with the configured bot token to perform server management tasks.
|
|
21
|
-
|
|
22
|
-
When sending messages, use Discord's rich embed format for structured content including titles, descriptions, fields, colors, and thumbnails. Respect channel categories and permissions when posting. For moderation tasks, always log actions and provide clear reasons when warning, muting, or banning users.
|
|
23
|
-
|
|
24
|
-
For server management, you can create and organize channels into categories, set up role hierarchies with appropriate permissions, and configure server settings. When handling voice channels, check user presence before attempting operations. Use threads for focused discussions to keep channels organized.
|
|
25
|
-
|
|
26
|
-
Manage slash commands and interactions for interactive bot experiences. Handle reaction roles, welcome messages, and automated moderation rules. When dealing with large servers, paginate member lists and message histories efficiently. Always respect Discord's rate limits and retry with exponential backoff when throttled.
|
|
27
|
-
|
|
28
|
-
## Examples
|
|
29
|
-
|
|
30
|
-
- "Send an embed to #announcements with the release notes"
|
|
31
|
-
- "Create a new text channel called 'dev-chat' in the Engineering category"
|
|
32
|
-
- "List all members with the 'Moderator' role"
|
|
33
|
-
- "Set up a reaction role message in #roles for team selection"
|
|
34
|
-
- "Purge the last 50 messages in #spam"
|
|
35
|
-
|
|
36
|
-
## Constraints
|
|
37
|
-
|
|
38
|
-
- Bot permissions are determined by its role in each server. Common permissions needed: Send Messages, Manage Channels, Manage Roles, Kick/Ban Members.
|
|
39
|
-
- Rate limits: 50 requests/second globally, with per-route limits.
|
|
40
|
-
- Message content intent is required for reading message content in non-DM contexts.
|
|
41
|
-
- Cannot interact with servers the bot has not been invited to.
|
|
42
|
-
- Embeds are limited to 6,000 total characters across all fields.
|
|
43
|
-
- Bulk message deletion only works for messages less than 14 days old.
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: git
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Work with Git repositories from the command line.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: developer-tools
|
|
8
|
-
tags: [git, version-control, vcs, branching, commits]
|
|
9
|
-
requires_secrets: []
|
|
10
|
-
requires_tools: []
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: '🧰'
|
|
14
|
-
requires:
|
|
15
|
-
bins: ['git']
|
|
16
|
-
install:
|
|
17
|
-
- id: brew
|
|
18
|
-
kind: brew
|
|
19
|
-
formula: git
|
|
20
|
-
bins: ['git']
|
|
21
|
-
label: 'Install git (brew)'
|
|
22
|
-
- id: apt
|
|
23
|
-
kind: apt
|
|
24
|
-
package: git
|
|
25
|
-
bins: ['git']
|
|
26
|
-
os: ['linux']
|
|
27
|
-
label: 'Install git (apt)'
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
# Git
|
|
31
|
-
|
|
32
|
-
Use `git` to inspect history, create branches, commit changes, and resolve conflicts.
|
|
33
|
-
|
|
34
|
-
## Common workflows
|
|
35
|
-
|
|
36
|
-
- Check status: `git status`
|
|
37
|
-
- Create a branch: `git checkout -b my-branch`
|
|
38
|
-
- Stage + commit: `git add -A && git commit -m "message"`
|
|
39
|
-
- Rebase: `git rebase -i origin/main`
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: github
|
|
3
|
-
version: '1.0.0'
|
|
4
|
-
description: Manage GitHub repositories, issues, pull requests, releases, and Actions workflows using the gh CLI.
|
|
5
|
-
author: Wunderland
|
|
6
|
-
namespace: wunderland
|
|
7
|
-
category: developer-tools
|
|
8
|
-
tags: [github, git, issues, pull-requests, ci-cd, code-review]
|
|
9
|
-
requires_secrets: [github.token]
|
|
10
|
-
requires_tools: []
|
|
11
|
-
metadata:
|
|
12
|
-
agentos:
|
|
13
|
-
emoji: "\uD83D\uDC19"
|
|
14
|
-
primaryEnv: GITHUB_TOKEN
|
|
15
|
-
requires:
|
|
16
|
-
bins: ['gh']
|
|
17
|
-
install:
|
|
18
|
-
- id: brew
|
|
19
|
-
kind: brew
|
|
20
|
-
formula: gh
|
|
21
|
-
bins: ['gh']
|
|
22
|
-
label: 'Install GitHub CLI (brew)'
|
|
23
|
-
- id: apt
|
|
24
|
-
kind: apt
|
|
25
|
-
package: gh
|
|
26
|
-
bins: ['gh']
|
|
27
|
-
os: ['linux']
|
|
28
|
-
label: 'Install GitHub CLI (apt)'
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
# GitHub (gh CLI)
|
|
32
|
-
|
|
33
|
-
Use the `gh` CLI to interact with GitHub repositories, issues, pull requests, releases, and GitHub Actions. You have full access to the GitHub API through the CLI, which supports both interactive and scriptable workflows.
|
|
34
|
-
|
|
35
|
-
When managing issues, always check for existing duplicates before creating new ones. For pull requests, include a clear title and description summarizing the changes. When reviewing PRs, provide specific, actionable feedback referencing line numbers. Use labels and milestones to organize work when the repository supports them.
|
|
36
|
-
|
|
37
|
-
For repository operations, prefer `gh api` for advanced queries that the standard subcommands do not cover. You can use `gh api graphql` for complex queries involving nested relationships. Always verify authentication status with `gh auth status` before performing write operations.
|
|
38
|
-
|
|
39
|
-
When working with GitHub Actions, you can trigger workflows with `gh workflow run`, check run status with `gh run list`, and view logs with `gh run view --log`. Use `gh release create` to manage releases with proper semantic versioning and changelogs.
|
|
40
|
-
|
|
41
|
-
## Examples
|
|
42
|
-
|
|
43
|
-
- `gh issue list --label bug --state open`
|
|
44
|
-
- `gh pr create --title "Fix auth bug" --body "Resolves #42"`
|
|
45
|
-
- `gh pr review 123 --approve`
|
|
46
|
-
- `gh api repos/{owner}/{repo}/actions/runs --jq '.workflow_runs[:5]'`
|
|
47
|
-
- `gh release create v1.2.0 --generate-notes`
|
|
48
|
-
|
|
49
|
-
## Constraints
|
|
50
|
-
|
|
51
|
-
- Requires the `gh` CLI to be installed and authenticated.
|
|
52
|
-
- Write operations require appropriate repository permissions.
|
|
53
|
-
- API rate limits apply (5,000 requests/hour for authenticated users).
|
|
54
|
-
- Large file operations should use Git LFS rather than the GitHub API.
|