opengstack 0.14.0 → 0.14.2
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/AGENTS.md +4 -4
- package/CLAUDE.md +127 -110
- package/README.md +10 -5
- package/SKILL.md +500 -70
- package/bin/opengstack.js +69 -69
- package/commands/autoplan.md +7 -9
- package/commands/benchmark.md +84 -91
- package/commands/browse.md +60 -64
- package/commands/canary.md +7 -9
- package/commands/careful.md +2 -2
- package/commands/codex.md +7 -9
- package/commands/connect-chrome.md +7 -9
- package/commands/cso.md +7 -9
- package/commands/design-consultation.md +7 -9
- package/commands/design-review.md +7 -9
- package/commands/design-shotgun.md +7 -9
- package/commands/document-release.md +7 -9
- package/commands/freeze.md +3 -3
- package/commands/guard.md +4 -4
- package/commands/investigate.md +7 -9
- package/commands/land-and-deploy.md +7 -9
- package/commands/office-hours.md +7 -9
- package/commands/{gstack-upgrade.md → opengstack-upgrade.md} +64 -65
- package/commands/plan-ceo-review.md +7 -9
- package/commands/plan-design-review.md +7 -9
- package/commands/plan-eng-review.md +7 -9
- package/commands/qa-only.md +7 -9
- package/commands/qa.md +7 -9
- package/commands/retro.md +7 -9
- package/commands/review.md +7 -9
- package/commands/setup-browser-cookies.md +22 -26
- package/commands/setup-deploy.md +7 -9
- package/commands/ship.md +7 -9
- package/commands/unfreeze.md +7 -7
- package/docs/designs/CHROME_VS_CHROMIUM_EXPLORATION.md +9 -9
- package/docs/designs/CONDUCTOR_CHROME_SIDEBAR_INTEGRATION.md +2 -2
- package/docs/designs/CONDUCTOR_SESSION_API.md +16 -16
- package/docs/designs/DESIGN_SHOTGUN.md +74 -74
- package/docs/designs/DESIGN_TOOLS_V1.md +111 -111
- package/docs/skills.md +483 -202
- package/package.json +42 -43
- package/scripts/analytics.ts +188 -0
- package/scripts/dev-skill.ts +83 -0
- package/scripts/discover-skills.ts +39 -0
- package/scripts/eval-compare.ts +97 -0
- package/scripts/eval-list.ts +117 -0
- package/scripts/eval-select.ts +86 -0
- package/scripts/eval-summary.ts +188 -0
- package/scripts/eval-watch.ts +172 -0
- package/scripts/gen-skill-docs.ts +473 -0
- package/scripts/resolvers/browse.ts +129 -0
- package/scripts/resolvers/codex-helpers.ts +133 -0
- package/scripts/resolvers/composition.ts +48 -0
- package/scripts/resolvers/confidence.ts +37 -0
- package/scripts/resolvers/constants.ts +50 -0
- package/scripts/resolvers/design.ts +950 -0
- package/scripts/resolvers/index.ts +59 -0
- package/scripts/resolvers/learnings.ts +96 -0
- package/scripts/resolvers/preamble.ts +505 -0
- package/scripts/resolvers/review.ts +884 -0
- package/scripts/resolvers/testing.ts +573 -0
- package/scripts/resolvers/types.ts +45 -0
- package/scripts/resolvers/utility.ts +421 -0
- package/scripts/skill-check.ts +190 -0
- package/scripts/cleanup.py +0 -100
- package/scripts/filter-skills.sh +0 -114
- package/scripts/filter_skills.py +0 -164
- package/scripts/install-commands.js +0 -45
- package/scripts/install-skills.js +0 -60
package/commands/qa-only.md
CHANGED
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
46
44
|
## Voice
|
|
47
45
|
|
|
48
|
-
You are
|
|
46
|
+
You are opengstack, an open source AI builder framework
|
|
49
47
|
|
|
50
48
|
Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
|
|
51
49
|
|
package/commands/qa.md
CHANGED
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
46
44
|
## Voice
|
|
47
45
|
|
|
48
|
-
You are
|
|
46
|
+
You are opengstack, an open source AI builder framework
|
|
49
47
|
|
|
50
48
|
Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
|
|
51
49
|
|
package/commands/retro.md
CHANGED
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
46
44
|
## Voice
|
|
47
45
|
|
|
48
|
-
You are
|
|
46
|
+
You are opengstack, an open source AI builder framework
|
|
49
47
|
|
|
50
48
|
Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
|
|
51
49
|
|
package/commands/review.md
CHANGED
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
46
44
|
## Voice
|
|
47
45
|
|
|
48
|
-
You are
|
|
46
|
+
You are opengstack, an open source AI builder framework
|
|
49
47
|
|
|
50
48
|
Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
|
|
51
49
|
|
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,7 +37,7 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
@@ -77,30 +75,29 @@ RECOMMENDATION:
|
|
|
77
75
|
|
|
78
76
|
Replace `SKILL_NAME` with the actual skill name from frontmatter, `OUTCOME` with
|
|
79
77
|
success/error/abort, and `USED_BROWSE` with true/false based on whether `$B` was used.
|
|
80
|
-
If you cannot determine the outcome, use "unknown".
|
|
81
|
-
remote binary only runs if telemetry is not off and the binary exists.
|
|
78
|
+
If you cannot determine the outcome, use "unknown".
|
|
82
79
|
|
|
83
80
|
## Plan Status Footer
|
|
84
81
|
|
|
85
82
|
When you are in plan mode and about to call ExitPlanMode:
|
|
86
83
|
|
|
87
|
-
1. Check if the plan file already has a `##
|
|
84
|
+
1. Check if the plan file already has a `## opengstack REVIEW REPORT` section.
|
|
88
85
|
2. If it DOES — skip (a review skill already wrote a richer report).
|
|
89
86
|
3. If it does NOT — run this command:
|
|
90
87
|
|
|
91
88
|
\`\`\`bash
|
|
92
|
-
~/.claude/skills/opengstack/bin/
|
|
89
|
+
~/.claude/skills/opengstack/bin/opengstack-review-read
|
|
93
90
|
\`\`\`
|
|
94
91
|
|
|
95
|
-
Then write a `##
|
|
92
|
+
Then write a `## opengstack REVIEW REPORT` section to the end of the plan file:
|
|
96
93
|
|
|
97
94
|
- If the output contains review entries (JSONL lines before `---CONFIG---`): format the
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
standard report table with runs/status/findings per skill, same format as the review
|
|
96
|
+
skills use.
|
|
100
97
|
- If the output is `NO_REVIEWS` or empty: write this placeholder table:
|
|
101
98
|
|
|
102
99
|
\`\`\`markdown
|
|
103
|
-
##
|
|
100
|
+
## opengstack REVIEW REPORT
|
|
104
101
|
|
|
105
102
|
| Review | Trigger | Why | Runs | Status | Findings |
|
|
106
103
|
|--------|---------|-----|------|--------|----------|
|
|
@@ -144,23 +141,23 @@ If `CDP_MODE=true`: tell the user "Not needed — you're connected to your real
|
|
|
144
141
|
```bash
|
|
145
142
|
_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
146
143
|
B=""
|
|
147
|
-
[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/
|
|
144
|
+
[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/opengstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/opengstack/browse/dist/browse"
|
|
148
145
|
[ -z "$B" ] && B=~/.claude/skills/opengstack/browse/dist/browse
|
|
149
146
|
if [ -x "$B" ]; then
|
|
150
|
-
|
|
147
|
+
echo "READY: $B"
|
|
151
148
|
else
|
|
152
|
-
|
|
149
|
+
echo "NEEDS_SETUP"
|
|
153
150
|
fi
|
|
154
151
|
|
|
155
152
|
If `NEEDS_SETUP`:
|
|
156
|
-
1. Tell the user: "
|
|
153
|
+
1. Tell the user: "opengstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait.
|
|
157
154
|
2. Run: `cd <SKILL_DIR> && ./setup`
|
|
158
155
|
3. If `bun` is not installed:
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
156
|
+
```bash
|
|
157
|
+
if ! command -v bun >/dev/null 2>&1; then
|
|
158
|
+
curl -fsSL https://bun.sh/install | BUN_VERSION=1.3.10 bash
|
|
159
|
+
fi
|
|
160
|
+
```
|
|
164
161
|
|
|
165
162
|
### 2. Open the cookie picker
|
|
166
163
|
|
|
@@ -174,7 +171,6 @@ an interactive picker UI in your default browser where you can:
|
|
|
174
171
|
- Click "+" to import a domain's cookies
|
|
175
172
|
- Click trash to remove imported cookies
|
|
176
173
|
|
|
177
|
-
|
|
178
174
|
### 3. Direct import (alternative)
|
|
179
175
|
|
|
180
176
|
If the user specifies a domain directly (e.g., `/setup-browser-cookies github.com`), skip the UI:
|
package/commands/setup-deploy.md
CHANGED
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
46
44
|
## Voice
|
|
47
45
|
|
|
48
|
-
You are
|
|
46
|
+
You are opengstack, an open source AI builder framework
|
|
49
47
|
|
|
50
48
|
Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
|
|
51
49
|
|
package/commands/ship.md
CHANGED
|
@@ -3,30 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
## Preamble (run first)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
|
|
6
|
+
If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
|
|
8
7
|
auto-invoke skills based on conversation context. Only run skills the user explicitly
|
|
9
8
|
types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
|
|
10
9
|
"I think /skillname might help here — want me to run it?" and wait for confirmation.
|
|
11
10
|
The user opted out of proactive behavior.
|
|
12
11
|
|
|
13
12
|
If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
|
|
14
|
-
or invoking other
|
|
15
|
-
of `/qa`, `/
|
|
13
|
+
or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
|
|
14
|
+
of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
|
|
16
15
|
`~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
|
|
17
16
|
|
|
18
17
|
If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
|
|
19
18
|
Then offer to open the essay in their default browser:
|
|
20
19
|
|
|
21
20
|
```bash
|
|
22
|
-
touch ~/.
|
|
21
|
+
touch ~/.opengstack/.completeness-intro-seen
|
|
23
22
|
|
|
24
23
|
Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
|
|
25
24
|
|
|
26
|
-
If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
|
|
27
25
|
ask the user about proactive behavior. Use AskUserQuestion:
|
|
28
26
|
|
|
29
|
-
>
|
|
27
|
+
> opengstack can proactively figure out when you might need a skill while you work —
|
|
30
28
|
> like suggesting /qa when you say "does this work?" or /investigate when you hit
|
|
31
29
|
> a bug. We recommend keeping this on — it speeds up every part of your workflow.
|
|
32
30
|
|
|
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
|
|
|
39
37
|
|
|
40
38
|
Always run:
|
|
41
39
|
```bash
|
|
42
|
-
touch ~/.
|
|
40
|
+
touch ~/.opengstack/.proactive-prompted
|
|
43
41
|
|
|
44
42
|
This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
|
|
45
43
|
|
|
46
44
|
## Voice
|
|
47
45
|
|
|
48
|
-
You are
|
|
46
|
+
You are opengstack, an open source AI builder framework
|
|
49
47
|
|
|
50
48
|
Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
|
|
51
49
|
|
package/commands/unfreeze.md
CHANGED
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
Remove the edit restriction set by `/freeze`, allowing edits to all directories.
|
|
7
7
|
|
|
8
8
|
```bash
|
|
9
|
-
mkdir -p ~/.
|
|
10
|
-
echo '{"skill":"unfreeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}'
|
|
9
|
+
mkdir -p ~/.opengstack/analytics
|
|
10
|
+
echo '{"skill":"unfreeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.opengstack/analytics/skill-usage.jsonl 2>/dev/null || true
|
|
11
11
|
|
|
12
12
|
## Clear the boundary
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.
|
|
15
|
+
STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.OpenGStack}"
|
|
16
16
|
if [ -f "$STATE_DIR/freeze-dir.txt" ]; then
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
PREV=$(cat "$STATE_DIR/freeze-dir.txt")
|
|
18
|
+
rm -f "$STATE_DIR/freeze-dir.txt"
|
|
19
|
+
echo "Freeze boundary cleared (was: $PREV). Edits are now allowed everywhere."
|
|
20
20
|
else
|
|
21
|
-
|
|
21
|
+
echo "No freeze boundary was set."
|
|
22
22
|
fi
|
|
23
23
|
|
|
24
24
|
session — they will just allow everything since no state file exists. To re-freeze,
|
|
@@ -56,19 +56,19 @@ During a `/office-hours` design session, we traced the architecture and discover
|
|
|
56
56
|
|
|
57
57
|
```
|
|
58
58
|
Browser States:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
HEADLESS (default) ←→ HEADED ($B connect or $B handoff)
|
|
60
|
+
Playwright Playwright (same engine)
|
|
61
|
+
launch() launchPersistentContext()
|
|
62
|
+
invisible visible + extension + side panel
|
|
63
63
|
|
|
64
64
|
Sidebar (orthogonal add-on, headed only):
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
Activity tab — always on, shows live browse commands
|
|
66
|
+
Refs tab — always on, shows @ref overlays
|
|
67
|
+
Chat tab — opt-in via --chat, experimental standalone agent
|
|
68
68
|
|
|
69
69
|
Data Bridge (sidebar → workspace):
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
Sidebar writes to .context/sidebar-inbox/*.json
|
|
71
|
+
Workspace reads via $B inbox
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
## Why Not Real Chrome?
|
|
@@ -40,7 +40,7 @@ Today, `/qa` and `/design-review` feel like a black box. Claude says "I found 3
|
|
|
40
40
|
- **You can interrupt** — "no, test the mobile view" or "skip that page" — without switching windows
|
|
41
41
|
- **One agent, two views** — the same Claude that's editing your code is also controlling the browser. No context duplication, no stale state
|
|
42
42
|
|
|
43
|
-
## What's already built (
|
|
43
|
+
## What's already built (opengstack side)
|
|
44
44
|
|
|
45
45
|
Everything on our side is done and shipping:
|
|
46
46
|
|
|
@@ -54,4 +54,4 @@ Everything on our side is done and shipping:
|
|
|
54
54
|
|
|
55
55
|
The only change on our side: swap the data source from "local `claude -p` subprocess" to "Conductor session stream." The extension code stays the same.
|
|
56
56
|
|
|
57
|
-
**Estimated effort:** 2-3 days Conductor engineering, 1 day
|
|
57
|
+
**Estimated effort:** 2-3 days Conductor engineering, 1 day opengstack integration.
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## Problem
|
|
4
4
|
|
|
5
|
-
When Claude controls your real browser via CDP (
|
|
5
|
+
When Claude controls your real browser via CDP (opengstack `$B connect`), you look at two
|
|
6
6
|
windows: **Conductor** (to see Claude's thinking) and **Chrome** (to see Claude's actions).
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
OpenGStack's Chrome extension Side Panel shows browse activity — every command, result,
|
|
9
9
|
and error. But for *full* session mirroring (Claude's thinking, tool calls, code edits),
|
|
10
10
|
the Side Panel needs Conductor to expose the conversation stream.
|
|
11
11
|
|
|
12
12
|
## What this enables
|
|
13
13
|
|
|
14
|
-
A "Session" tab in the
|
|
14
|
+
A "Session" tab in the opengstack Chrome extension Side Panel that shows:
|
|
15
15
|
- Claude's thinking/content (truncated for performance)
|
|
16
16
|
- Tool call names + icons (Edit, Bash, Read, etc.)
|
|
17
17
|
- Turn boundaries with cost estimates
|
|
@@ -51,16 +51,16 @@ Discovery endpoint listing active workspaces.
|
|
|
51
51
|
|
|
52
52
|
```json
|
|
53
53
|
{
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
"workspaces": [
|
|
55
|
+
{
|
|
56
|
+
"id": "abc123",
|
|
57
|
+
"name": "opengstack",
|
|
58
|
+
"branch": "
|
|
59
|
+
"directory": "~/opengstack",
|
|
60
|
+
"pid": 12345,
|
|
61
|
+
"active": true
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -71,11 +71,11 @@ The Chrome extension auto-selects a workspace by matching the browse server's gi
|
|
|
71
71
|
|
|
72
72
|
- **Localhost-only.** Same trust model as Claude Code's own debug output.
|
|
73
73
|
- **No auth required.** If Conductor wants auth, include a Bearer token in the
|
|
74
|
-
|
|
74
|
+
workspace listing that the extension passes on SSE requests.
|
|
75
75
|
- **Content truncation** is a privacy feature — long code outputs, file contents, and
|
|
76
|
-
|
|
76
|
+
sensitive tool results never leave Conductor's full UI.
|
|
77
77
|
|
|
78
|
-
## What
|
|
78
|
+
## What opengstack builds (extension side)
|
|
79
79
|
|
|
80
80
|
Already scaffolded in the Side Panel "Session" tab (currently shows placeholder).
|
|
81
81
|
|