Skip to content

Commit e441d53

Browse files
committed
Reduce unnecessary prompts in X skills
1 parent 9411370 commit e441d53

5 files changed

Lines changed: 45 additions & 17 deletions

File tree

skills/x-act-on-notifications/SKILL.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description: Perform selected actions on X (Twitter) notifications through ai-ch
77

88
Use ai-chrome-pilot to inspect X notifications, build a candidate list, and perform only the requested action on the notifications that match the user's criteria.
99

10-
Keep the skill profile-agnostic. Ask for the profile name at runtime instead of hardcoding any specific profile.
10+
Keep the skill profile-agnostic. Use `default` unless the user explicitly requested another profile.
1111

1212
Use this skill for notification actions. If the user only wants to inspect notifications first, use `x-get-notifications` instead. If the user wants to reply or quote-post from a target post, use `x-compose-post`.
1313

@@ -28,17 +28,25 @@ Do not overload this skill with reply or quote composition. Treat those as posti
2828

2929
If X shows a login screen, stop and use `x-login` first.
3030

31-
## Inputs To Confirm
31+
## Inputs To Resolve
3232

33-
Confirm these before acting:
33+
Resolve these before acting:
3434

3535
- `profile_name`: default to `default` if unspecified
3636
- `action`: one of `like`, `bookmark`, `repost`
3737
- `types`: `reply`, `quote`, or both
3838
- `filters`: actor handle/name, text substring, date substring, and optional limit
3939
- `mode`: `dry-run` or `execute`
4040

41-
If the user says only "interact with notifications" without enough detail, default to `dry-run` and present candidates first instead of clicking anything.
41+
Default resolution rules:
42+
43+
- If `profile_name` is unspecified, use `default` without asking
44+
- If the user explicitly asked to `like` or `bookmark`, default `mode=execute`
45+
- If the user explicitly asked to `repost`, default `mode=dry-run` unless the request already includes clear matching conditions
46+
- If `types` is unspecified, inspect both `reply` and `quote`
47+
- If `filters` is unspecified and the action is `like` or `bookmark`, treat the request as applying to all matching pending notifications currently collected
48+
49+
If the user says only "interact with notifications" without enough detail to infer an action, default to `dry-run` and present candidates instead of clicking anything.
4250

4351
Recommended decision rule:
4452

@@ -136,7 +144,10 @@ Useful filter patterns:
136144

137145
If multiple candidates still match and the user asked for one specific item, stop and show the narrowed list instead of acting.
138146

139-
If no explicit filters were supplied, propose a candidate list grouped by reply and quote, then wait for confirmation unless the user clearly asked to act on all matching unacted notifications of a broad class.
147+
If no explicit filters were supplied:
148+
149+
- for `like` or `bookmark`, execute against all matching pending notifications when the user clearly asked to perform that action
150+
- for `repost`, present the candidate list first unless the request already identifies the target notifications unambiguously
140151

141152
### 6. Execute the requested action
142153

@@ -182,7 +193,8 @@ Report:
182193

183194
- Never hardcode a profile name
184195
- Never act on anything if the matching logic is ambiguous
185-
- Prefer `dry-run` first unless the user clearly requested execution
196+
- Do not ask follow-up questions when the action, scope, and target notifications are already explicit enough to execute safely
197+
- Prefer `dry-run` first for `repost` or when the requested action cannot be matched unambiguously
186198
- Use fresh refs from the latest `/snapshot`; do not reuse stale refs after scrolling or clicking
187199
- Check both tabs before saying there are no matches
188200
- Treat `repost` as higher-risk than `like` or `bookmark`; stop if any confirmation step is unclear

skills/x-compose-post/SKILL.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Use ai-chrome-pilot to create X posts from one unified workflow, then branch int
99

1010
Prefer this skill for all post-creation tasks. Use `x-schedule-post` only when a schedule-only flow is explicitly needed.
1111

12-
Keep the skill profile-agnostic. Ask for the profile name at runtime instead of hardcoding any profile.
12+
Keep the skill profile-agnostic. Use `default` unless the user explicitly requested another profile.
1313

1414
## Prerequisites
1515

@@ -20,9 +20,9 @@ Keep the skill profile-agnostic. Ask for the profile name at runtime instead of
2020

2121
If X shows a login screen, stop and use `x-login` first.
2222

23-
## Inputs To Confirm
23+
## Inputs To Resolve
2424

25-
Confirm these before acting:
25+
Resolve these before acting:
2626

2727
- `profile_name`: default to `default` if unspecified
2828
- `mode`: one of `post`, `reply`, `quote`, `schedule`
@@ -33,6 +33,13 @@ Confirm these before acting:
3333
- year, month, day, hour, minute
3434
- `image`: optional attachment path when the user provided one
3535

36+
Default resolution rules:
37+
38+
- If `profile_name` is unspecified, use `default` without asking
39+
- If the request is a normal post and includes `post_text`, execute directly
40+
- If the request is a scheduled post and includes `post_text` plus the full schedule, execute directly
41+
- If the request is `reply` or `quote`, ask only when the target post is not specific enough to identify safely
42+
3643
If the target post is not specific enough for `reply` or `quote`, stop and ask for clarification or first use a read-only skill to identify the exact target.
3744

3845
## Mode Selection
@@ -179,6 +186,7 @@ curl -s -X POST http://127.0.0.1:3333/eval \
179186

180187
- Never hardcode a profile name
181188
- Never guess the target post for `reply` or `quote`
189+
- Do not ask for an extra confirmation immediately before submission when the mode, text, and target are already explicit
182190
- Prefer direct target URLs when the user supplied them
183191
- Stop when multiple similar posts match and the target is ambiguous
184192
- Use fresh refs from the latest `/snapshot`

skills/x-get-notifications/SKILL.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@ Keep this skill read-only. Do not like, repost, reply, or otherwise engage with
1717

1818
## Steps
1919

20-
### 1. Ask the user for profile name
20+
### 1. Resolve the profile name
2121

22-
Ask which profile name to use (default is `default`). This determines which browser profile to load.
22+
Use `default` unless the user explicitly requested another profile. This determines which browser profile to load.
2323

2424
### 2. Verify server is running
2525

2626
```bash
2727
curl -s http://127.0.0.1:3333/health
2828
```
2929

30-
If not running, start it:
30+
If not running, start it with the resolved profile:
3131

3232
```bash
3333
HEADLESS=0 PROFILE_NAME=<profile_name> npx tsx src/index.ts &
@@ -109,6 +109,7 @@ kill $(lsof -ti:9222) 2>/dev/null
109109

110110
## Important notes
111111

112+
- Do not ask which profile to use unless the user explicitly needs a non-`default` profile
112113
- Add `sleep 1-2` between operations to wait for page loads
113114
- Always use `/snapshot` before each action to get fresh refs
114115
- The notifications page may require scrolling to load all notifications (infinite scroll)

skills/x-login/SKILL.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ Log in to X via ai-chrome-pilot and persist the session to a browser profile.
1515

1616
## Steps
1717

18-
### 1. Ask the user for a profile name
18+
### 1. Resolve the profile name
1919

20-
Ask which profile name to use (default is `default`). The profile determines where browser data is stored (`~/.ai-chrome-pilot/profiles/<profile_name>/`).
20+
Use `default` unless the user explicitly requested another profile. The profile determines where browser data is stored (`~/.ai-chrome-pilot/profiles/<profile_name>/`).
2121

2222
### 2. Start the server
2323

@@ -57,7 +57,7 @@ View `/tmp/x_login_check.png` with the Read tool.
5757

5858
### 6. Request manual login if needed
5959

60-
If not logged in, **ask the user to log in manually**. Never attempt to enter credentials automatically.
60+
If not logged in, ask the user to log in manually in the opened browser window. Never attempt to enter credentials automatically.
6161

6262
Example message:
6363
> The Chrome browser window is open. Please log in to X in the browser. Let me know when you're done.
@@ -75,5 +75,6 @@ After successful login, inform the user:
7575

7676
## Important notes
7777

78+
- Do not ask which profile to use unless the user explicitly needs a non-`default` profile
7879
- Always ask the user to log in manually. Never auto-fill passwords or authentication credentials.
7980
- Do not use `EPHEMERAL=1` if the session needs to be persisted.

skills/x-schedule-post/SKILL.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,16 @@ Treat this as the schedule-focused variant of `x-compose-post`. If the user want
1717

1818
## Required inputs
1919

20-
Ask the user for:
2120
- **Post text**: The text to post
2221
- **Scheduled date/time**: Year, month, day, hour, and minute
2322
- **Image** (optional): An image to attach
2423

24+
Default resolution rules:
25+
26+
- Use `default` unless the user explicitly requested another profile
27+
- If post text and the full scheduled date/time are already provided, execute directly without an extra confirmation step
28+
- Ask follow-up questions only when required inputs are missing
29+
2530
## Steps
2631

2732
### 1. Verify server is running
@@ -30,7 +35,7 @@ Ask the user for:
3035
curl -s http://127.0.0.1:3333/health
3136
```
3237

33-
If not running, start it:
38+
If not running, start it with the resolved profile:
3439

3540
```bash
3641
HEADLESS=0 PROFILE_NAME=<profile_name> npx tsx src/index.ts &
@@ -186,6 +191,7 @@ kill $(lsof -ti:9222) 2>/dev/null
186191

187192
## Important notes
188193

194+
- Do not ask which profile to use unless the user explicitly needs a non-`default` profile
189195
- Add `sleep 1-2` between operations to wait for page loads
190196
- Always use `/snapshot` before each action to get fresh refs (refs change when the page navigates or dialogs open/close)
191197
- X's UI is dynamic; use both snapshots and screenshots to identify the correct elements

0 commit comments

Comments
 (0)