You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: skills/x-act-on-notifications/SKILL.md
+18-6Lines changed: 18 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ description: Perform selected actions on X (Twitter) notifications through ai-ch
7
7
8
8
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.
9
9
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.
11
11
12
12
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`.
13
13
@@ -28,17 +28,25 @@ Do not overload this skill with reply or quote composition. Treat those as posti
28
28
29
29
If X shows a login screen, stop and use `x-login` first.
30
30
31
-
## Inputs To Confirm
31
+
## Inputs To Resolve
32
32
33
-
Confirm these before acting:
33
+
Resolve these before acting:
34
34
35
35
-`profile_name`: default to `default` if unspecified
36
36
-`action`: one of `like`, `bookmark`, `repost`
37
37
-`types`: `reply`, `quote`, or both
38
38
-`filters`: actor handle/name, text substring, date substring, and optional limit
39
39
-`mode`: `dry-run` or `execute`
40
40
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.
42
50
43
51
Recommended decision rule:
44
52
@@ -136,7 +144,10 @@ Useful filter patterns:
136
144
137
145
If multiple candidates still match and the user asked for one specific item, stop and show the narrowed list instead of acting.
138
146
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
140
151
141
152
### 6. Execute the requested action
142
153
@@ -182,7 +193,8 @@ Report:
182
193
183
194
- Never hardcode a profile name
184
195
- 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
186
198
- Use fresh refs from the latest `/snapshot`; do not reuse stale refs after scrolling or clicking
187
199
- Check both tabs before saying there are no matches
188
200
- Treat `repost` as higher-risk than `like` or `bookmark`; stop if any confirmation step is unclear
Copy file name to clipboardExpand all lines: skills/x-compose-post/SKILL.md
+11-3Lines changed: 11 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ Use ai-chrome-pilot to create X posts from one unified workflow, then branch int
9
9
10
10
Prefer this skill for all post-creation tasks. Use `x-schedule-post` only when a schedule-only flow is explicitly needed.
11
11
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.
13
13
14
14
## Prerequisites
15
15
@@ -20,9 +20,9 @@ Keep the skill profile-agnostic. Ask for the profile name at runtime instead of
20
20
21
21
If X shows a login screen, stop and use `x-login` first.
22
22
23
-
## Inputs To Confirm
23
+
## Inputs To Resolve
24
24
25
-
Confirm these before acting:
25
+
Resolve these before acting:
26
26
27
27
-`profile_name`: default to `default` if unspecified
28
28
-`mode`: one of `post`, `reply`, `quote`, `schedule`
@@ -33,6 +33,13 @@ Confirm these before acting:
33
33
- year, month, day, hour, minute
34
34
-`image`: optional attachment path when the user provided one
35
35
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
+
36
43
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.
37
44
38
45
## Mode Selection
@@ -179,6 +186,7 @@ curl -s -X POST http://127.0.0.1:3333/eval \
179
186
180
187
- Never hardcode a profile name
181
188
- 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
182
190
- Prefer direct target URLs when the user supplied them
183
191
- Stop when multiple similar posts match and the target is ambiguous
Copy file name to clipboardExpand all lines: skills/x-login/SKILL.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,9 +15,9 @@ Log in to X via ai-chrome-pilot and persist the session to a browser profile.
15
15
16
16
## Steps
17
17
18
-
### 1. Ask the user for a profile name
18
+
### 1. Resolve the profile name
19
19
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>/`).
21
21
22
22
### 2. Start the server
23
23
@@ -57,7 +57,7 @@ View `/tmp/x_login_check.png` with the Read tool.
57
57
58
58
### 6. Request manual login if needed
59
59
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.
61
61
62
62
Example message:
63
63
> 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:
75
75
76
76
## Important notes
77
77
78
+
- Do not ask which profile to use unless the user explicitly needs a non-`default` profile
78
79
- Always ask the user to log in manually. Never auto-fill passwords or authentication credentials.
79
80
- Do not use `EPHEMERAL=1` if the session needs to be persisted.
0 commit comments