@masslessai/push-todo 3.2.0 → 3.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.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "push-todo",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "Voice tasks from Push iOS app"
5
5
  }
package/lib/cli.js CHANGED
@@ -15,7 +15,7 @@ import { ensureDaemonRunning, getDaemonStatus, startDaemon, stopDaemon } from '.
15
15
  import { getScreenshotPath, screenshotExists, openScreenshot } from './utils/screenshots.js';
16
16
  import { bold, red, cyan, dim, green } from './utils/colors.js';
17
17
 
18
- const VERSION = '3.2.0';
18
+ const VERSION = '3.2.1';
19
19
 
20
20
  const HELP_TEXT = `
21
21
  ${bold('push-todo')} - Voice tasks from Push iOS app for Claude Code
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masslessai/push-todo",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "Voice tasks from Push iOS app for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,6 +31,8 @@ const LEGACY_SKILL_LINK = join(LEGACY_SKILL_DIR, 'push-todo');
31
31
 
32
32
  // OpenAI Codex locations
33
33
  const CODEX_DIR = join(homedir(), '.codex');
34
+ const CODEX_SKILL_DIR = join(CODEX_DIR, 'skills', 'push-todo');
35
+ const CODEX_SKILL_FILE = join(CODEX_SKILL_DIR, 'SKILL.md');
34
36
  const CODEX_AGENTS_FILE = join(CODEX_DIR, 'AGENTS.md');
35
37
 
36
38
  // Clawdbot locations
@@ -142,7 +144,7 @@ function migrateFromPython() {
142
144
 
143
145
  /**
144
146
  * Set up OpenAI Codex integration.
145
- * Adds Push Tasks section to ~/.codex/AGENTS.md
147
+ * Creates ~/.codex/skills/push-todo/SKILL.md and updates AGENTS.md
146
148
  *
147
149
  * @returns {boolean} True if Codex was detected and set up
148
150
  */
@@ -154,12 +156,22 @@ function setupCodex() {
154
156
 
155
157
  console.log('[push-todo] Detected OpenAI Codex installation');
156
158
 
157
- const PUSH_SECTION = `
158
- ## Push Tasks Integration
159
+ // Skill file content
160
+ const SKILL_CONTENT = `# Push Tasks Skill
161
+
162
+ This skill retrieves and processes tasks sent from the Push iOS app.
163
+
164
+ ## Activation
159
165
 
160
- Voice tasks captured on iPhone via the Push app.
166
+ This skill activates when the user:
167
+ - Says "push-todo", "push todo", "push tasks", or "tasks from push"
168
+ - Runs \`$push-todo\` command
169
+ - Mentions "tasks from iPhone" or "mobile tasks"
170
+ - Asks about "pending tasks" or "voice tasks"
161
171
 
162
- ### Commands
172
+ ## Commands
173
+
174
+ Run these in the terminal:
163
175
 
164
176
  | Command | Description |
165
177
  |---------|-------------|
@@ -167,32 +179,76 @@ Voice tasks captured on iPhone via the Push app.
167
179
  | \`push-todo 427\` | Show task #427 |
168
180
  | \`push-todo connect\` | Connect/fix issues |
169
181
  | \`push-todo search "query"\` | Search tasks |
182
+ | \`push-todo --help\` | All options |
170
183
 
171
- ### Session Start
184
+ ## Instructions
172
185
 
173
- At the start of each session, check for pending tasks:
174
- \`\`\`bash
175
- push-todo --json 2>/dev/null | head -1
176
- \`\`\`
177
- If tasks exist, inform: "You have X task(s) from Push. Type $push-todo to see them."
186
+ When this skill is activated:
187
+
188
+ 1. **Check connection** - If user hasn't set up, run:
189
+ \`\`\`bash
190
+ push-todo connect
191
+ \`\`\`
192
+
193
+ 2. **Fetch tasks** - List available tasks:
194
+ \`\`\`bash
195
+ push-todo
196
+ \`\`\`
197
+
198
+ 3. **Work on specific task** - Get task details:
199
+ \`\`\`bash
200
+ push-todo 427
201
+ \`\`\`
202
+
203
+ 4. **Present the task** to the user with a brief summary and offer to help implement it.
204
+ `;
205
+
206
+ // AGENTS.md bootstrap content
207
+ const AGENTS_SECTION = `
208
+ ## Push Tasks Integration
209
+
210
+ At the start of each session, check for pending tasks from the Push iOS app:
211
+
212
+ 1. Run this command silently:
213
+ \`\`\`bash
214
+ push-todo --json 2>/dev/null | head -1
215
+ \`\`\`
216
+
217
+ 2. If tasks exist, inform the user:
218
+ "You have X task(s) from Push. Type $push-todo to see them."
219
+
220
+ 3. If no output or error, proceed normally without mentioning Push.
178
221
  `;
179
222
 
180
223
  try {
224
+ // Create skill directory and SKILL.md
225
+ mkdirSync(CODEX_SKILL_DIR, { recursive: true });
226
+ writeFileSync(CODEX_SKILL_FILE, SKILL_CONTENT);
227
+ console.log('[push-todo] Codex: Created skills/push-todo/SKILL.md');
228
+
229
+ // Update AGENTS.md for session-start bootstrap
181
230
  if (existsSync(CODEX_AGENTS_FILE)) {
182
231
  const content = readFileSync(CODEX_AGENTS_FILE, 'utf8');
183
232
  if (content.includes('Push Tasks Integration')) {
184
- console.log('[push-todo] Codex: Push section already exists in AGENTS.md');
185
- return true;
233
+ // Update existing section (replace old Python references)
234
+ const updated = content.replace(
235
+ /## Push Tasks Integration[\s\S]*?(?=\n## |$)/,
236
+ AGENTS_SECTION.trim() + '\n\n'
237
+ );
238
+ writeFileSync(CODEX_AGENTS_FILE, updated);
239
+ console.log('[push-todo] Codex: Updated AGENTS.md');
240
+ } else {
241
+ appendFileSync(CODEX_AGENTS_FILE, AGENTS_SECTION);
242
+ console.log('[push-todo] Codex: Added to AGENTS.md');
186
243
  }
187
- appendFileSync(CODEX_AGENTS_FILE, PUSH_SECTION);
188
- console.log('[push-todo] Codex: Added Push section to AGENTS.md');
189
244
  } else {
190
- writeFileSync(CODEX_AGENTS_FILE, PUSH_SECTION.trim() + '\n');
191
- console.log('[push-todo] Codex: Created AGENTS.md with Push section');
245
+ writeFileSync(CODEX_AGENTS_FILE, AGENTS_SECTION.trim() + '\n');
246
+ console.log('[push-todo] Codex: Created AGENTS.md');
192
247
  }
248
+
193
249
  return true;
194
250
  } catch (error) {
195
- console.log(`[push-todo] Codex: Could not set up AGENTS.md: ${error.message}`);
251
+ console.log(`[push-todo] Codex: Setup failed: ${error.message}`);
196
252
  return false;
197
253
  }
198
254
  }