aiden-runtime 3.19.5 → 3.19.6

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 (101) hide show
  1. package/dist/core/skillLoader.js +2 -0
  2. package/dist/core/version.js +1 -1
  3. package/dist-bundle/cli.js +3 -1
  4. package/dist-bundle/index.js +3 -1
  5. package/package.json +2 -1
  6. package/scripts/postinstall.js +58 -1
  7. package/workspace-templates/HEARTBEAT.md +16 -0
  8. package/workspace-templates/SOUL.md +267 -0
  9. package/workspace-templates/STANDING_ORDERS.md +21 -0
  10. package/workspace-templates/permissions.yaml +180 -0
  11. package/workspace-templates/skills/architecture-diagram/SKILL.md +126 -0
  12. package/workspace-templates/skills/architecture-diagram/skill.json +25 -0
  13. package/workspace-templates/skills/arxiv/SKILL.md +124 -0
  14. package/workspace-templates/skills/arxiv/skill.json +26 -0
  15. package/workspace-templates/skills/ascii-art/SKILL.md +142 -0
  16. package/workspace-templates/skills/ascii-art/skill.json +26 -0
  17. package/workspace-templates/skills/blogwatcher/SKILL.md +147 -0
  18. package/workspace-templates/skills/blogwatcher/skill.json +26 -0
  19. package/workspace-templates/skills/censys/SKILL.md +104 -0
  20. package/workspace-templates/skills/censys/index.ts +133 -0
  21. package/workspace-templates/skills/censys/skill.json +25 -0
  22. package/workspace-templates/skills/clipboard-history/SKILL.md +101 -0
  23. package/workspace-templates/skills/clipboard-history/skill.json +23 -0
  24. package/workspace-templates/skills/crt-sh/SKILL.md +102 -0
  25. package/workspace-templates/skills/crt-sh/index.ts +59 -0
  26. package/workspace-templates/skills/crt-sh/skill.json +25 -0
  27. package/workspace-templates/skills/cveapi/SKILL.md +114 -0
  28. package/workspace-templates/skills/cveapi/index.ts +249 -0
  29. package/workspace-templates/skills/cveapi/skill.json +25 -0
  30. package/workspace-templates/skills/docker-management/SKILL.md +156 -0
  31. package/workspace-templates/skills/docker-management/skill.json +25 -0
  32. package/workspace-templates/skills/excalidraw/SKILL.md +148 -0
  33. package/workspace-templates/skills/excalidraw/skill.json +25 -0
  34. package/workspace-templates/skills/explainshell/SKILL.md +93 -0
  35. package/workspace-templates/skills/explainshell/index.ts +132 -0
  36. package/workspace-templates/skills/explainshell/skill.json +25 -0
  37. package/workspace-templates/skills/financial_research/SKILL.md +21 -0
  38. package/workspace-templates/skills/financial_research/skill.json +24 -0
  39. package/workspace-templates/skills/gif-search/SKILL.md +122 -0
  40. package/workspace-templates/skills/gif-search/skill.json +25 -0
  41. package/workspace-templates/skills/github-auth/SKILL.md +134 -0
  42. package/workspace-templates/skills/github-auth/skill.json +26 -0
  43. package/workspace-templates/skills/github-issues/SKILL.md +130 -0
  44. package/workspace-templates/skills/github-issues/skill.json +25 -0
  45. package/workspace-templates/skills/github-pr-workflow/SKILL.md +143 -0
  46. package/workspace-templates/skills/github-pr-workflow/skill.json +26 -0
  47. package/workspace-templates/skills/github-repo-management/SKILL.md +147 -0
  48. package/workspace-templates/skills/github-repo-management/skill.json +26 -0
  49. package/workspace-templates/skills/google-workspace/SKILL.md +110 -0
  50. package/workspace-templates/skills/google-workspace/skill.json +26 -0
  51. package/workspace-templates/skills/greynoise/SKILL.md +96 -0
  52. package/workspace-templates/skills/greynoise/index.ts +107 -0
  53. package/workspace-templates/skills/greynoise/skill.json +25 -0
  54. package/workspace-templates/skills/haveibeenpwned/SKILL.md +100 -0
  55. package/workspace-templates/skills/haveibeenpwned/index.ts +72 -0
  56. package/workspace-templates/skills/haveibeenpwned/skill.json +24 -0
  57. package/workspace-templates/skills/jupyter-live-kernel/SKILL.md +116 -0
  58. package/workspace-templates/skills/jupyter-live-kernel/skill.json +25 -0
  59. package/workspace-templates/skills/linear/SKILL.md +107 -0
  60. package/workspace-templates/skills/linear/skill.json +25 -0
  61. package/workspace-templates/skills/nano-pdf/SKILL.md +113 -0
  62. package/workspace-templates/skills/nano-pdf/skill.json +26 -0
  63. package/workspace-templates/skills/notion/SKILL.md +108 -0
  64. package/workspace-templates/skills/notion/skill.json +24 -0
  65. package/workspace-templates/skills/obsidian/SKILL.md +115 -0
  66. package/workspace-templates/skills/obsidian/skill.json +24 -0
  67. package/workspace-templates/skills/ocr-and-documents/SKILL.md +125 -0
  68. package/workspace-templates/skills/ocr-and-documents/skill.json +26 -0
  69. package/workspace-templates/skills/p5js/SKILL.md +163 -0
  70. package/workspace-templates/skills/p5js/skill.json +24 -0
  71. package/workspace-templates/skills/research-paper-writing/SKILL.md +158 -0
  72. package/workspace-templates/skills/research-paper-writing/skill.json +26 -0
  73. package/workspace-templates/skills/securityheaders/SKILL.md +99 -0
  74. package/workspace-templates/skills/securityheaders/index.ts +213 -0
  75. package/workspace-templates/skills/securityheaders/skill.json +26 -0
  76. package/workspace-templates/skills/shodan/SKILL.md +113 -0
  77. package/workspace-templates/skills/shodan/index.ts +94 -0
  78. package/workspace-templates/skills/shodan/skill.json +26 -0
  79. package/workspace-templates/skills/songsee/SKILL.md +152 -0
  80. package/workspace-templates/skills/songsee/skill.json +25 -0
  81. package/workspace-templates/skills/ssllabs/SKILL.md +107 -0
  82. package/workspace-templates/skills/ssllabs/index.ts +208 -0
  83. package/workspace-templates/skills/ssllabs/skill.json +27 -0
  84. package/workspace-templates/skills/stable-diffusion-image-generation/SKILL.md +136 -0
  85. package/workspace-templates/skills/stable-diffusion-image-generation/skill.json +24 -0
  86. package/workspace-templates/skills/systematic-debugging/SKILL.md +131 -0
  87. package/workspace-templates/skills/systematic-debugging/skill.json +25 -0
  88. package/workspace-templates/skills/test-driven-development/SKILL.md +164 -0
  89. package/workspace-templates/skills/test-driven-development/skill.json +25 -0
  90. package/workspace-templates/skills/urlscan/SKILL.md +118 -0
  91. package/workspace-templates/skills/urlscan/index.ts +94 -0
  92. package/workspace-templates/skills/urlscan/skill.json +24 -0
  93. package/workspace-templates/skills/virustotal/SKILL.md +120 -0
  94. package/workspace-templates/skills/virustotal/index.ts +124 -0
  95. package/workspace-templates/skills/virustotal/skill.json +26 -0
  96. package/workspace-templates/skills/web_research/SKILL.md +18 -0
  97. package/workspace-templates/skills/web_research/skill.json +20 -0
  98. package/workspace-templates/skills/xitter/SKILL.md +148 -0
  99. package/workspace-templates/skills/xitter/skill.json +26 -0
  100. package/workspace-templates/skills/youtube-content/SKILL.md +121 -0
  101. package/workspace-templates/skills/youtube-content/skill.json +25 -0
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: web_research
3
+ description: Deep web research with multi-source verification
4
+ version: 1.0.0
5
+ tags: web, research, search, analyze
6
+ license: Apache-2.0
7
+ ---
8
+
9
+ # Web Research
10
+
11
+ When performing web research:
12
+ 1. Search broad first, then narrow by entity
13
+ 2. Fetch actual page content, not just snippets
14
+ 3. Cross-reference at least 2 sources before stating facts
15
+ 4. Extract specific data points: names, numbers, dates, comparisons
16
+ 5. Never state information you cannot verify from the fetched content
17
+ 6. For comparisons: create structured tables with consistent attributes
18
+ 7. Always note the source URL for key facts
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "web_research",
3
+ "version": "1.0.0",
4
+ "description": "Deep web research with multi-source verification",
5
+ "author": "local",
6
+ "license": "MIT",
7
+ "tools": [],
8
+ "trigger_phrases": [],
9
+ "compatible_agents": [
10
+ "aiden"
11
+ ],
12
+ "min_agent_version": "3.0.0",
13
+ "tags": [
14
+ "web",
15
+ "research",
16
+ "search",
17
+ "analyze"
18
+ ],
19
+ "created": "2026-04-27T17:11:41.095Z"
20
+ }
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: xitter
3
+ description: Post, read, and search X (Twitter) content using x-cli or the X API v2
4
+ category: social
5
+ version: 1.0.0
6
+ origin: aiden
7
+ license: Apache-2.0
8
+ tags: twitter, x, social-media, tweet, post, search, api, x-cli, timeline, mentions
9
+ ---
10
+
11
+ # X (Twitter) Automation
12
+
13
+ Read, post, and search X content using the `x-cli` command-line tool or the X API v2 directly. Requires X API credentials.
14
+
15
+ ## When to Use
16
+
17
+ - User wants to post a tweet or thread on X
18
+ - User wants to search for recent tweets on a topic
19
+ - User wants to read their home timeline or mentions
20
+ - User wants to fetch tweets from a specific account
21
+ - User wants to schedule or automate social media posts
22
+
23
+ ## How to Use
24
+
25
+ ### 1. Set up X API credentials
26
+
27
+ Register at https://developer.twitter.com → Create Project → Create App. Get:
28
+ - `API_KEY`, `API_SECRET`
29
+ - `ACCESS_TOKEN`, `ACCESS_TOKEN_SECRET`
30
+ - `BEARER_TOKEN` (for read-only app-only auth)
31
+
32
+ ```powershell
33
+ $env:X_BEARER_TOKEN = "your_bearer_token"
34
+ $env:X_API_KEY = "your_api_key"
35
+ $env:X_API_SECRET = "your_api_secret"
36
+ $env:X_ACCESS_TOKEN = "your_access_token"
37
+ $env:X_ACCESS_SECRET = "your_access_secret"
38
+ ```
39
+
40
+ ### 2. Search recent tweets (Bearer Token — no user auth needed)
41
+
42
+ ```python
43
+ import requests, os
44
+
45
+ def search_tweets(query, max_results=10):
46
+ headers = {"Authorization": f"Bearer {os.environ['X_BEARER_TOKEN']}"}
47
+ params = {
48
+ "query": f"{query} -is:retweet lang:en",
49
+ "max_results": max_results,
50
+ "tweet.fields": "created_at,author_id,public_metrics"
51
+ }
52
+ resp = requests.get("https://api.twitter.com/2/tweets/search/recent", headers=headers, params=params)
53
+ resp.raise_for_status()
54
+ for tweet in resp.json().get("data", []):
55
+ print(f"• {tweet['text'][:120]}")
56
+ print(f" {tweet['created_at']} likes={tweet['public_metrics']['like_count']}\n")
57
+
58
+ search_tweets("Aiden AI agent 2026", max_results=5)
59
+ ```
60
+
61
+ ### 3. Post a tweet (OAuth 1.0a)
62
+
63
+ ```python
64
+ import requests, os, time, hashlib, hmac, base64, urllib.parse, uuid
65
+
66
+ def post_tweet(text):
67
+ url = "https://api.twitter.com/2/tweets"
68
+ params = {"text": text}
69
+
70
+ # OAuth 1.0a signature
71
+ oauth_params = {
72
+ "oauth_consumer_key": os.environ["X_API_KEY"],
73
+ "oauth_nonce": uuid.uuid4().hex,
74
+ "oauth_signature_method": "HMAC-SHA1",
75
+ "oauth_timestamp": str(int(time.time())),
76
+ "oauth_token": os.environ["X_ACCESS_TOKEN"],
77
+ "oauth_version": "1.0",
78
+ }
79
+ signing_key = "&".join([urllib.parse.quote(os.environ["X_API_SECRET"], safe=""),
80
+ urllib.parse.quote(os.environ["X_ACCESS_SECRET"], safe="")])
81
+ base_string = "&".join(["POST", urllib.parse.quote(url, safe=""),
82
+ urllib.parse.quote("&".join(f"{k}={v}" for k,v in sorted(oauth_params.items())), safe="")])
83
+ signature = base64.b64encode(hmac.new(signing_key.encode(), base_string.encode(), hashlib.sha1).digest()).decode()
84
+ oauth_params["oauth_signature"] = signature
85
+
86
+ auth_header = "OAuth " + ", ".join(f'{k}="{urllib.parse.quote(v, safe="")}"' for k,v in oauth_params.items())
87
+ resp = requests.post(url, json=params, headers={"Authorization": auth_header, "Content-Type": "application/json"})
88
+ resp.raise_for_status()
89
+ print(f"Posted tweet: {resp.json()['data']['id']}")
90
+
91
+ post_tweet("Hello from Aiden! 🤖 #AI #automation")
92
+ ```
93
+
94
+ ### 4. Fetch user timeline
95
+
96
+ ```python
97
+ import requests, os
98
+
99
+ def get_user_timeline(username, max_results=10):
100
+ headers = {"Authorization": f"Bearer {os.environ['X_BEARER_TOKEN']}"}
101
+ user = requests.get(f"https://api.twitter.com/2/users/by/username/{username}", headers=headers).json()
102
+ user_id = user["data"]["id"]
103
+
104
+ resp = requests.get(
105
+ f"https://api.twitter.com/2/users/{user_id}/tweets",
106
+ headers=headers,
107
+ params={"max_results": max_results, "tweet.fields": "created_at,public_metrics", "exclude": "retweets"}
108
+ )
109
+ for tweet in resp.json().get("data", []):
110
+ print(f"• {tweet['text'][:120]}\n {tweet['created_at']}\n")
111
+
112
+ get_user_timeline("elonmusk", max_results=5)
113
+ ```
114
+
115
+ ### 5. Read mentions
116
+
117
+ ```python
118
+ import requests, os
119
+
120
+ def get_mentions(user_id, max_results=10):
121
+ headers = {"Authorization": f"Bearer {os.environ['X_BEARER_TOKEN']}"}
122
+ resp = requests.get(
123
+ f"https://api.twitter.com/2/users/{user_id}/mentions",
124
+ headers=headers,
125
+ params={"max_results": max_results, "tweet.fields": "created_at,author_id"}
126
+ )
127
+ for tweet in resp.json().get("data", []):
128
+ print(f"• {tweet['text'][:120]}\n {tweet['created_at']}\n")
129
+ ```
130
+
131
+ ## Examples
132
+
133
+ **"Search for recent tweets about LLM agents"**
134
+ → Use step 2 with query `"LLM agents"`.
135
+
136
+ **"Post a tweet saying 'Aiden just automated my morning report'"**
137
+ → Ask user to confirm before posting, then use step 3.
138
+
139
+ **"Show me the last 10 tweets from a specific account"**
140
+ → Use step 4 with the target username.
141
+
142
+ ## Cautions
143
+
144
+ - Posting tweets requires user-context OAuth 1.0a — Bearer Token alone cannot post
145
+ - X API free tier limits search results to the last 7 days and 1 request per 15 minutes
146
+ - Always ask user for explicit confirmation before posting any tweet on their behalf
147
+ - X API rate limits are strict — cache results locally rather than re-fetching on every call
148
+ - Never hardcode API credentials — always use environment variables
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "xitter",
3
+ "version": "1.0.0",
4
+ "description": "Post, read, and search X (Twitter) content using x-cli or the X API v2",
5
+ "author": "aiden",
6
+ "license": "MIT",
7
+ "tools": [],
8
+ "trigger_phrases": [],
9
+ "compatible_agents": [
10
+ "aiden"
11
+ ],
12
+ "min_agent_version": "3.0.0",
13
+ "tags": [
14
+ "twitter",
15
+ "x",
16
+ "social-media",
17
+ "tweet",
18
+ "post",
19
+ "search",
20
+ "api",
21
+ "x-cli",
22
+ "timeline",
23
+ "mentions"
24
+ ],
25
+ "created": "2026-04-27T17:11:41.209Z"
26
+ }
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: youtube-content
3
+ description: Extract transcripts, download audio/video, and analyze YouTube content using youtube-transcript-api and yt-dlp
4
+ category: research
5
+ version: 1.0.0
6
+ origin: aiden
7
+ license: Apache-2.0
8
+ tags: youtube, transcript, video, audio, download, subtitles, yt-dlp, content, summary
9
+ ---
10
+
11
+ # YouTube Content Extraction
12
+
13
+ Extract transcripts, download audio or video, and retrieve metadata from YouTube using `youtube-transcript-api` (Python) and `yt-dlp`.
14
+
15
+ ## When to Use
16
+
17
+ - User wants to get the transcript of a YouTube video
18
+ - User wants to summarize a YouTube video without watching it
19
+ - User wants to download audio from a YouTube video
20
+ - User wants to download a video for offline viewing
21
+ - User wants to search for metadata (title, duration, views) of a video
22
+
23
+ ## How to Use
24
+
25
+ ### 1. Install required tools
26
+
27
+ ```powershell
28
+ pip install youtube-transcript-api
29
+ pip install yt-dlp
30
+ # Verify
31
+ yt-dlp --version
32
+ ```
33
+
34
+ ### 2. Get a video transcript (Python)
35
+
36
+ ```python
37
+ from youtube_transcript_api import YouTubeTranscriptApi
38
+
39
+ video_id = "dQw4w9WgXcQ" # from youtube.com/watch?v=<id>
40
+ transcript = YouTubeTranscriptApi.get_transcript(video_id)
41
+ text = " ".join(entry["text"] for entry in transcript)
42
+ print(text[:2000])
43
+ ```
44
+
45
+ ### 3. Get transcript in a specific language
46
+
47
+ ```python
48
+ from youtube_transcript_api import YouTubeTranscriptApi
49
+
50
+ video_id = "dQw4w9WgXcQ"
51
+ # Try English first, then auto-generated
52
+ transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=["en", "en-US"])
53
+ text = " ".join(entry["text"] for entry in transcript)
54
+ ```
55
+
56
+ ### 4. List available transcript languages for a video
57
+
58
+ ```python
59
+ from youtube_transcript_api import YouTubeTranscriptApi
60
+
61
+ video_id = "dQw4w9WgXcQ"
62
+ transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
63
+ for t in transcript_list:
64
+ print(t.language, t.language_code, "auto-generated:", t.is_generated)
65
+ ```
66
+
67
+ ### 5. Download audio (MP3) with yt-dlp
68
+
69
+ ```powershell
70
+ $videoUrl = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
71
+ yt-dlp -x --audio-format mp3 -o "%(title)s.%(ext)s" $videoUrl
72
+ ```
73
+
74
+ ### 6. Download video (best quality)
75
+
76
+ ```powershell
77
+ $videoUrl = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
78
+ yt-dlp -f "bestvideo+bestaudio" --merge-output-format mp4 -o "%(title)s.%(ext)s" $videoUrl
79
+ ```
80
+
81
+ ### 7. Download video at specific quality
82
+
83
+ ```powershell
84
+ # List available formats first
85
+ yt-dlp -F $videoUrl
86
+
87
+ # Download 720p
88
+ yt-dlp -f "bestvideo[height<=720]+bestaudio" --merge-output-format mp4 -o "%(title)s.%(ext)s" $videoUrl
89
+ ```
90
+
91
+ ### 8. Get video metadata (no download)
92
+
93
+ ```powershell
94
+ yt-dlp --dump-json --no-download $videoUrl | python -m json.tool | Select-String -Pattern '"title"|"duration"|"view_count"|"upload_date"'
95
+ ```
96
+
97
+ ### 9. Download an entire playlist
98
+
99
+ ```powershell
100
+ $playlistUrl = "https://www.youtube.com/playlist?list=PLxxxxxx"
101
+ yt-dlp -x --audio-format mp3 -o "%(playlist_index)s-%(title)s.%(ext)s" $playlistUrl
102
+ ```
103
+
104
+ ## Examples
105
+
106
+ **"Get me the transcript of this YouTube tutorial so I can read it"**
107
+ → Use step 2 — extract video ID from URL and call `get_transcript`.
108
+
109
+ **"Download the audio from this podcast episode on YouTube"**
110
+ → Use step 5 with the video URL to download as MP3.
111
+
112
+ **"What languages are available for transcripts on this video?"**
113
+ → Use step 4 to list available transcript languages.
114
+
115
+ ## Cautions
116
+
117
+ - `youtube-transcript-api` only works for videos that have transcripts (manual or auto-generated)
118
+ - Auto-generated transcripts may have errors, especially for technical content or non-English speech
119
+ - Downloading videos may be subject to YouTube's Terms of Service — use for personal research and fair use only
120
+ - yt-dlp may need updates when YouTube changes its API: run `yt-dlp -U` to update
121
+ - Rate limiting may occur on rapid consecutive downloads — add delays between requests for playlists
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "youtube-content",
3
+ "version": "1.0.0",
4
+ "description": "Extract transcripts, download audio/video, and analyze YouTube content using youtube-transcript-api and yt-dlp",
5
+ "author": "aiden",
6
+ "license": "MIT",
7
+ "tools": [],
8
+ "trigger_phrases": [],
9
+ "compatible_agents": [
10
+ "aiden"
11
+ ],
12
+ "min_agent_version": "3.0.0",
13
+ "tags": [
14
+ "youtube",
15
+ "transcript",
16
+ "video",
17
+ "audio",
18
+ "download",
19
+ "subtitles",
20
+ "yt-dlp",
21
+ "content",
22
+ "summary"
23
+ ],
24
+ "created": "2026-04-27T17:11:41.233Z"
25
+ }