shaka 0.1.0.pre.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.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +63 -0
- data/bin/install +44 -0
- data/docs/control-towers.md +128 -0
- data/docs/getting-started.md +138 -0
- data/docs/host-support.md +117 -0
- data/docs/packaging.md +60 -0
- data/docs/pilot-plan.md +129 -0
- data/docs/review.md +202 -0
- data/docs/usage-reporting.md +100 -0
- data/docs/verification.md +104 -0
- data/docs/working-with-your-agent.md +253 -0
- data/exe/shaka +4 -0
- data/exe/shaka-install +4 -0
- data/skills/shaka/SKILL.md +212 -0
- data/skills/shaka/lib/shaka/checkpoint.rb +129 -0
- data/skills/shaka/lib/shaka/claude_usage.rb +112 -0
- data/skills/shaka/lib/shaka/cost_estimate.rb +130 -0
- data/skills/shaka/lib/shaka/error.rb +6 -0
- data/skills/shaka/lib/shaka/github.rb +146 -0
- data/skills/shaka/lib/shaka/merge.rb +105 -0
- data/skills/shaka/lib/shaka/publication.rb +129 -0
- data/skills/shaka/lib/shaka/publishing.rb +137 -0
- data/skills/shaka/lib/shaka/recommendation.rb +70 -0
- data/skills/shaka/lib/shaka/response_count.rb +20 -0
- data/skills/shaka/lib/shaka/usage.rb +229 -0
- data/skills/shaka/lib/shaka/work.rb +121 -0
- data/skills/shaka/scripts/shaka +89 -0
- metadata +70 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: d5c6e93c8ca7f20820fc1372d2f980e02f3555d99071197212fbf15453fb09ea
|
|
4
|
+
data.tar.gz: 27f43e62af62e855322b757c39c61dd4d7247fd232a2460778a17233b6e1b15f
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 68927d2edef47eb9e97ffaa22ba71302792c8142efbdc74a3ce1894079dea1e9446fe529fc6d89df51bd24e0c79d2cac3022b2bf014dc87d7cddc8dbdc96805e
|
|
7
|
+
data.tar.gz: 1b11c42ce1eaa44cd3dccd6656505aaa85b14617435296e936bffbcd886b268b516f84c9b0953e7afdc846959e76d116c63ef8078863ab6323c5433b9a7c1723
|
data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ShakaCode
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
data/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Shaka
|
|
2
|
+
|
|
3
|
+
Give your agent a task. Get a verified PR and a clear explanation.
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
$shaka Fix the failing search test
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
You steer the work. Shaka takes it through delivery:
|
|
10
|
+
|
|
11
|
+
- Reads your repository's instructions and asks about missing requirements.
|
|
12
|
+
- Tests the behavior before fixing it, then runs your repository's checks.
|
|
13
|
+
- Opens a pull request with a walkthrough of what changed and why.
|
|
14
|
+
- Handles review findings and verifies the fixes.
|
|
15
|
+
- Asks you to approve the merge, or merges when authorized and ready.
|
|
16
|
+
|
|
17
|
+
## You choose who can merge
|
|
18
|
+
|
|
19
|
+
**Ask:** the agent prepares the PR, then waits for your merge approval.
|
|
20
|
+
**Auto:** you authorize the agent to merge once the verified revision passes required
|
|
21
|
+
checks and approvals. Risky changes still need a human decision.
|
|
22
|
+
Existing authority is reused; a review-only or PR-only request keeps that stopping point.
|
|
23
|
+
|
|
24
|
+
## For people
|
|
25
|
+
|
|
26
|
+
[Install Shaka and complete your first task →](docs/getting-started.md)
|
|
27
|
+
|
|
28
|
+
| I want to… | Read |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| Choose merge authority, answer questions, or split a larger task | [Working with your agent](docs/working-with-your-agent.md) |
|
|
31
|
+
| Use master and repository control towers to organize Shaka tasks | [Control towers](docs/control-towers.md) |
|
|
32
|
+
| Understand review findings or a blocked PR | [Review handling](docs/review.md) |
|
|
33
|
+
| Evaluate code, UI, or documentation changes | [Verification and reader trials](docs/verification.md) |
|
|
34
|
+
| Understand model, effort, and token reports | [Usage reporting](docs/usage-reporting.md) |
|
|
35
|
+
| Check supported hosts and their limits | [Host support](docs/host-support.md) |
|
|
36
|
+
| Upgrade or remove an installation | [Installation maintenance](docs/getting-started.md#upgrade) |
|
|
37
|
+
|
|
38
|
+
### For open-source maintainers and contributors
|
|
39
|
+
|
|
40
|
+
Open-source work starts with validating issues, PRs, and their comments before
|
|
41
|
+
acting on them. Treat material from strangers as untrusted input. Verify who supplied
|
|
42
|
+
it, whether they are authorized for the action, and whether the claim or change is valid.
|
|
43
|
+
Recognized team members and repository-approved bots should fit the ordinary workflow;
|
|
44
|
+
recognition alone does not make their content correct or grant permission to execute code.
|
|
45
|
+
|
|
46
|
+
See [open-source intake and current limits](docs/working-with-your-agent.md#open-source-intake)
|
|
47
|
+
for the distinction between source checks, technical validation, and authorization.
|
|
48
|
+
The proposed public-comment filter in [PR #43](https://github.com/shakacode/shaka/pull/43)
|
|
49
|
+
is only part of this work; complete bot/team handling is not yet established.
|
|
50
|
+
|
|
51
|
+
## For agents and contributors to Shaka
|
|
52
|
+
|
|
53
|
+
Start with the [agent procedure](skills/shaka/SKILL.md). Each repository's `AGENTS.md`
|
|
54
|
+
supplies its commands and authority; [Shaka's contributor instructions](AGENTS.md)
|
|
55
|
+
name this project's setup and checks. See the [requirements](docs/pilot-plan.md)
|
|
56
|
+
and [gem packaging guide](docs/packaging.md) for design and distribution.
|
|
57
|
+
The procedure owns execution; linked guides explain decisions and evidence for
|
|
58
|
+
people and agents. Keep shared rules in one place and follow the procedure's references.
|
|
59
|
+
|
|
60
|
+
In Claude Code, send `/shaka`. Codex is the reference host; [Claude Code consumer delivery
|
|
61
|
+
and Cursor are unverified](docs/host-support.md). Public pilot: [progress](https://github.com/shakacode/shaka/issues/1).
|
|
62
|
+
|
|
63
|
+
[MIT licensed](LICENSE). Copyright © 2026 ShakaCode.
|
data/bin/install
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require 'optparse'
|
|
6
|
+
|
|
7
|
+
skills_dir = nil
|
|
8
|
+
parser = OptionParser.new do |options|
|
|
9
|
+
options.banner = 'Usage: bin/install --skills-dir DIR'
|
|
10
|
+
options.on('--skills-dir DIR', 'Explicit destination for the isolated skill') { |value| skills_dir = value }
|
|
11
|
+
options.on('-h', '--help', 'Show this help') do
|
|
12
|
+
puts options
|
|
13
|
+
exit
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
begin
|
|
18
|
+
parser.parse!
|
|
19
|
+
raise OptionParser::MissingArgument, '--skills-dir DIR' if skills_dir.nil?
|
|
20
|
+
raise OptionParser::InvalidArgument, 'DIR must not be empty' if skills_dir.strip.empty?
|
|
21
|
+
raise OptionParser::InvalidArgument, ARGV.join(' ') unless ARGV.empty?
|
|
22
|
+
|
|
23
|
+
links = %w[shaka].map do |name|
|
|
24
|
+
[File.realpath("../skills/#{name}", __dir__), File.join(File.expand_path(skills_dir), name)]
|
|
25
|
+
end
|
|
26
|
+
conflict = links.find do |source, destination|
|
|
27
|
+
(File.exist?(destination) || File.symlink?(destination)) &&
|
|
28
|
+
!(File.symlink?(destination) && File.readlink(destination) == source)
|
|
29
|
+
end
|
|
30
|
+
abort "Refusing existing destination: #{conflict.last}" if conflict
|
|
31
|
+
|
|
32
|
+
links.each do |source, destination|
|
|
33
|
+
if File.symlink?(destination)
|
|
34
|
+
puts "Already installed: #{destination}"
|
|
35
|
+
else
|
|
36
|
+
FileUtils.mkdir_p(File.dirname(destination))
|
|
37
|
+
File.symlink(source, destination)
|
|
38
|
+
puts "Installed: #{destination} -> #{source}"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
rescue OptionParser::ParseError, SystemCallError => e
|
|
42
|
+
warn e.message
|
|
43
|
+
exit 1
|
|
44
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Use control towers with Shaka
|
|
2
|
+
|
|
3
|
+
A **Master Control Tower (MCT)** keeps priorities and dependencies clear across
|
|
4
|
+
repositories. A **Repository Control Tower (RCT)** keeps one repository's work
|
|
5
|
+
moving. Each implementation or PR repair has one owner who uses the installed
|
|
6
|
+
`$shaka` skill through the requested outcome.
|
|
7
|
+
|
|
8
|
+
These are optional roles in your existing tasks. They need no new service,
|
|
9
|
+
workflow database, scheduler, or Shaka extension. Start with one repository and
|
|
10
|
+
one real delivery. Keep using Shaka directly when a tower would add no value.
|
|
11
|
+
|
|
12
|
+
## Who owns what
|
|
13
|
+
|
|
14
|
+
| Role | Owns | Completion evidence |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| Master tower | Cross-repository priorities, dependencies, and consequential decisions | The requested outcomes and remaining dependencies, linked to repository results |
|
|
17
|
+
| Repository tower | Task selection, existing-owner reconciliation, sequencing, and follow-through | Each selected task has one accountable delivery owner and a verified result or blocker |
|
|
18
|
+
| Shaka delivery owner | Intake, implementation, checks, review, walkthrough, and authorized merge or handoff | The PR's current revision, validation, independent review when required, and actual final state |
|
|
19
|
+
|
|
20
|
+
The RCT can be the delivery owner for one bounded task. If a separate task
|
|
21
|
+
already owns the work, continue there; the RCT follows its result instead of
|
|
22
|
+
also editing or merging its PR. Transfer ownership explicitly before taking over.
|
|
23
|
+
An idle icon, an old comment, or a title is not proof that work is abandoned.
|
|
24
|
+
|
|
25
|
+
Keep requirements in their original issue or tracker and delivery evidence on
|
|
26
|
+
GitHub. A private portfolio page may link to them; do not copy private priorities,
|
|
27
|
+
task links, or customer context into a public PR. A dashboard is a view, not
|
|
28
|
+
proof of ownership, authorization, or completion.
|
|
29
|
+
|
|
30
|
+
## Start with existing tasks
|
|
31
|
+
|
|
32
|
+
Give an existing portfolio task this role and a bounded outcome:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
Act as the Master Control Tower for the repositories and outcome I name.
|
|
36
|
+
Keep priorities, cross-repository dependencies, and decisions clear. Reuse
|
|
37
|
+
existing repository towers and delivery owners. Route each implementation or
|
|
38
|
+
PR repair through the installed $shaka skill in the verified target checkout.
|
|
39
|
+
Keep one delivery owner per task. Follow verified PR outcomes; do not become
|
|
40
|
+
a second writer or merge executor for an owned PR. Preserve existing authority,
|
|
41
|
+
pauses, work limits, and private context. Report material results and the next
|
|
42
|
+
decision or blocker. This role does not authorize new tasks or scheduled work.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Give the repository's existing task this role and its selected work:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
Act as the Repository Control Tower for the repository I name. Read its trusted
|
|
49
|
+
AGENTS.md and reconcile the selected issue or PR with live GitHub state and
|
|
50
|
+
existing task ownership. Finish useful existing work before admitting more.
|
|
51
|
+
For each delivery, use the installed $shaka skill. Either own that bounded task
|
|
52
|
+
here or continue through its existing owner; do not split closeout responsibility.
|
|
53
|
+
Preserve the repository's commands, review requirements, and merge authority.
|
|
54
|
+
Use isolated worktrees for independent writers and never duplicate a target.
|
|
55
|
+
Keep real decisions visible and verify the final PR state before reporting done.
|
|
56
|
+
Preserve explicit pauses and limits; do not create background work from this role.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Then supply an actual assignment, replacing the brackets with verified facts:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
$shaka Complete [issue/PR URL or task description] in [owner/repository].
|
|
63
|
+
Checkout: [verified local path]. Success means [observable result].
|
|
64
|
+
Existing owner: [task reference, or confirmed unowned].
|
|
65
|
+
Merge authority: [existing decision and scope, or ask if unset].
|
|
66
|
+
Dependencies and limits: [known prerequisites, pauses, and stopping point].
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The installed Shaka procedure owns model selection, intake, verification, review,
|
|
70
|
+
and merge handling. Reuse answers already given for the same task. A tower prompt
|
|
71
|
+
does not change the host's model, replace the installed skill, or authorize
|
|
72
|
+
delegation. Use supported host controls and the user's actual authorization.
|
|
73
|
+
|
|
74
|
+
## Keep decisions and waits accurate
|
|
75
|
+
|
|
76
|
+
Use Shaka's **ask** and **auto** preferences. Preserve an existing decision's
|
|
77
|
+
repository, task, revision, and risk scope; do not convert an old workflow's
|
|
78
|
+
setting into broader Shaka authority. Unknown authority defaults to asking.
|
|
79
|
+
Record the preference early; in Ask, prepare the reviewable result before seeking
|
|
80
|
+
the actual merge decision. Reuse authority already granted for that scope.
|
|
81
|
+
|
|
82
|
+
CI waits, missing reviews, and repairable conflicts remain with the delivery
|
|
83
|
+
owner. Finish independent work while waiting. Send a decision to the human only
|
|
84
|
+
when their input is needed, with the exact question, recommendation, PR evidence,
|
|
85
|
+
and owning task. If an attention desk already exists, reuse its established
|
|
86
|
+
writer and response channel; Shaka does not require or implement a desk.
|
|
87
|
+
An answered question is no longer unanswered, but the owner must still verify
|
|
88
|
+
the requested action completed. A queued message proves neither consumption
|
|
89
|
+
nor completion.
|
|
90
|
+
|
|
91
|
+
An Auto preference cannot compensate for missing protection or checks. The
|
|
92
|
+
[merge boundary](pilot-plan.md#merge-boundary) requires observable native checks
|
|
93
|
+
enforced for the acting account. If GitHub cannot expose that protection, retain
|
|
94
|
+
the prepared PR and report the limitation; do not switch submission paths to
|
|
95
|
+
evade the guard. A tower does not grant deployment or other consequential authority.
|
|
96
|
+
|
|
97
|
+
## Adopt and prove the path
|
|
98
|
+
|
|
99
|
+
Choose an active repository where the user wants a result. Adopting Shaka does
|
|
100
|
+
not require changing, validating, or merging the workflow it replaces. Treat
|
|
101
|
+
retired workflow repositories as reference material unless the user explicitly
|
|
102
|
+
assigns work there. Their PRs and checks are not adoption dependencies.
|
|
103
|
+
|
|
104
|
+
1. Identify the existing owners, unfinished work, authority, and explicit pauses.
|
|
105
|
+
Verify the target checkout and installed Shaka source outside that checkout.
|
|
106
|
+
2. Review and select a published revision of the role instructions. A paused
|
|
107
|
+
tower needs explicit authorization to resume its named work. Adoption alone
|
|
108
|
+
does not release other pauses, renew limits, or restart scheduled tasks.
|
|
109
|
+
3. Apply the role to one existing RCT and complete one real Shaka task. Require
|
|
110
|
+
the correct repository, no duplicate owner, actual checks, current review when
|
|
111
|
+
required, a commit-bound walkthrough, and the authorized merge or PR handoff.
|
|
112
|
+
4. Read back GitHub's final state and have the master consume the result. Record
|
|
113
|
+
the tested source revision and outcome once in the existing rollout record.
|
|
114
|
+
Delivery, acknowledgment, and verified completion are different facts.
|
|
115
|
+
5. Expand to the remaining repositories only after that pilot succeeds and their
|
|
116
|
+
adoption is authorized. Reuse their commands, owners, and approval requirements.
|
|
117
|
+
|
|
118
|
+
Check negative cases too: an owned target must reuse or wait for its owner;
|
|
119
|
+
an Ask task must wait for its merge decision; a changed head needs fresh evidence;
|
|
120
|
+
a paused task must remain paused without a release decision; a retired repository
|
|
121
|
+
must not receive new work from adopting Shaka. Apply a user's scope correction
|
|
122
|
+
before continuing an earlier assignment. Record observed actions, not just a
|
|
123
|
+
reader's promise to follow the prompt. A document review or passing unit suite
|
|
124
|
+
alone does not establish tower adoption.
|
|
125
|
+
|
|
126
|
+
To roll back, stop new admissions under the changed role, preserve unfinished
|
|
127
|
+
owners and PRs, and restore the previous reviewed instructions. Do not remove
|
|
128
|
+
other workflows or discard their active work as part of adopting Shaka.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Install and complete your first task
|
|
2
|
+
|
|
3
|
+
Shaka guides an agent from a task description to a tested, reviewed GitHub PR.
|
|
4
|
+
Start with a small change in a repository you trust, such as fixing a search test
|
|
5
|
+
or correcting a broken link in a documentation site.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
You need Git, Ruby 3.4, authenticated [GitHub CLI](https://cli.github.com/),
|
|
10
|
+
and a signed-in Codex app, [Codex CLI](https://learn.chatgpt.com/docs/codex/cli#getting-started),
|
|
11
|
+
or [Claude Code](https://code.claude.com/docs/en/setup).
|
|
12
|
+
Check `git --version`, `ruby --version`, and `gh auth status` in your terminal;
|
|
13
|
+
run `gh auth login` if needed. Codex terminal users also need `codex --version` to work;
|
|
14
|
+
Claude Code users need `claude --version`.
|
|
15
|
+
The skill uses no development gems. Keep your application's own Ruby version.
|
|
16
|
+
|
|
17
|
+
Your repository's `AGENTS.md` should name setup, validation, and review commands,
|
|
18
|
+
the base branch, and who may authorize merging. Shaka reads the scripts and offers
|
|
19
|
+
a small addition if required instructions are missing. Existing instructions count.
|
|
20
|
+
To merge, GitHub must enforce required checks for the acting account, allow squash
|
|
21
|
+
merges, and satisfy required approvals. Otherwise, Shaka explains the blocker on the PR.
|
|
22
|
+
|
|
23
|
+
## Install in the Codex app
|
|
24
|
+
|
|
25
|
+
Keep this trusted source checkout outside the repositories you will edit.
|
|
26
|
+
If it already exists, follow **Upgrade** below. First, get the source:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
mkdir -p "$HOME/agent-tools"
|
|
30
|
+
git clone https://github.com/shakacode/shaka.git "$HOME/agent-tools/shaka"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Inspect the cloned `bin/install` and `skills/shaka/` source. Then, with Ruby 3.4
|
|
34
|
+
available, install the skill:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
"$HOME/agent-tools/shaka/bin/install" --skills-dir "$HOME/.agents/skills"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
<a id="use-shaka-in-the-codex-app"></a>
|
|
41
|
+
|
|
42
|
+
Open a Codex task in the repository you want to change. The skill should appear on
|
|
43
|
+
the next turn; restart Codex if it does not. Installation preserves other skills
|
|
44
|
+
and settings. The task uses the app's existing permissions; this installation does
|
|
45
|
+
not create a sandbox for untrusted contributor code.
|
|
46
|
+
|
|
47
|
+
<a id="use-shaka-in-claude-code"></a>
|
|
48
|
+
|
|
49
|
+
## Install in Claude Code
|
|
50
|
+
|
|
51
|
+
After cloning the source as above, install into Claude Code's user skills directory:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
"$HOME/agent-tools/shaka/bin/install" --skills-dir "$HOME/.claude/skills"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Start Claude Code in the repository you want to change, and use `/shaka` wherever
|
|
58
|
+
this guide shows `$shaka`. Claude Code runs your personal skill instead of a
|
|
59
|
+
same-named skill in a repository's `.claude/skills`, and the skill stops if it was
|
|
60
|
+
loaded from inside the checkout. Keep the trusted source outside any `--add-dir`
|
|
61
|
+
directory. Your usual permission mode applies; installation adds no sandbox.
|
|
62
|
+
|
|
63
|
+
## Complete your first task
|
|
64
|
+
|
|
65
|
+
Send this, replacing the example with your issue number, task URL, or description:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
$shaka Fix the failing search test. Bring the finished PR back for my approval.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
An issue number uses the current repository. A URL can identify another one;
|
|
72
|
+
Shaka asks for its checkout if needed. If it cannot read the task, paste the
|
|
73
|
+
requirements. Private task content stays out of public PRs unless you allow sharing.
|
|
74
|
+
|
|
75
|
+
The agent reads the task and recommends a model and effort. It pauses for **ready**
|
|
76
|
+
unless you explicitly supplied matching model and effort and clearly authorized an
|
|
77
|
+
immediate start, with those settings active in the host. Unavailable or conflicting
|
|
78
|
+
settings still require one user action. It implements on a branch, runs your repo's
|
|
79
|
+
checks, opens a PR with a walkthrough, and handles review findings. You get the PR
|
|
80
|
+
link, validation result, and any blocker; detailed evidence is on the PR.
|
|
81
|
+
|
|
82
|
+
The example chooses **Ask**: you make the merge decision after the PR is ready.
|
|
83
|
+
To choose **Auto**, say “Merge when checks and required approvals pass” instead.
|
|
84
|
+
Existing merge authority is reused; review-only and PR-only requests stop there.
|
|
85
|
+
Auto still waits for required approvals and raises risky decisions. If a task stops
|
|
86
|
+
at a blocker, resume it to continue; it does not keep trying in the background.
|
|
87
|
+
|
|
88
|
+
## Use a fresh terminal session
|
|
89
|
+
|
|
90
|
+
After cloning the source, install into a dedicated directory outside your repositories:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
"$HOME/agent-tools/shaka/bin/install" --skills-dir "$HOME/agent-tools/shaka-pilot/skills"
|
|
94
|
+
export PATH="$HOME/agent-tools/shaka-pilot/skills/shaka/scripts:$PATH"
|
|
95
|
+
shaka work --repo /path/to/your/repository "Fix the failing search test. Use Ask."
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Replace the repository path. This starts interactive Codex with the same task flow.
|
|
99
|
+
If your application's version manager selects another Ruby, run the command from
|
|
100
|
+
outside that checkout with Ruby 3.4 selected. Add the `PATH` line to your shell
|
|
101
|
+
startup file to make `shaka` available in new terminals.
|
|
102
|
+
The launcher uses a separate temporary session and native approval prompts;
|
|
103
|
+
[host support](host-support.md#startup-boundary-and-current-validation) records its tested limits.
|
|
104
|
+
|
|
105
|
+
## Upgrade
|
|
106
|
+
|
|
107
|
+
Set `shaka_source` to your existing trusted checkout. Inspect its remote and local
|
|
108
|
+
changes first; it should point to `shakacode/shaka`. Preserve local edits and resolve
|
|
109
|
+
conflicts before switching or pulling.
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
shaka_source="$HOME/agent-tools/shaka"
|
|
113
|
+
git -C "$shaka_source" remote -v
|
|
114
|
+
git -C "$shaka_source" status --short
|
|
115
|
+
git -C "$shaka_source" switch main
|
|
116
|
+
git -C "$shaka_source" pull --ff-only
|
|
117
|
+
"$shaka_source/bin/install" --skills-dir "$HOME/.agents/skills"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Start a fresh task after upgrading. For a terminal install, pass your dedicated
|
|
121
|
+
skills directory instead; for Claude Code, pass `$HOME/.claude/skills`. Earlier installs used `agent-workflows-v2` or
|
|
122
|
+
`shakacode-workflows` source directories: keep that location and use it above.
|
|
123
|
+
Inspect old `sw` and `aw` symlinks and unlink only those belonging to this installation.
|
|
124
|
+
Replace any old `sw/scripts` shell `PATH` entry with the `shaka/scripts` path above.
|
|
125
|
+
|
|
126
|
+
## Remove or roll back
|
|
127
|
+
|
|
128
|
+
Inspect the link with `ls -l "$HOME/.agents/skills/shaka"`. If it points to your
|
|
129
|
+
Shaka installation, remove it:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
test -L "$HOME/.agents/skills/shaka" && unlink "$HOME/.agents/skills/shaka"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Use your dedicated skills directory for a terminal install and remove its shell
|
|
136
|
+
`PATH` entry. For Claude Code, use `$HOME/.claude/skills`. Inspect and remove any old `sw` or `aw` links individually; preserve
|
|
137
|
+
unrelated skills and real directories. To roll back, remove the verified links,
|
|
138
|
+
check out the prior trusted source revision, and run that revision's installer.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Host support
|
|
2
|
+
|
|
3
|
+
Codex CLI is the reference host for this pilot and Claude Code the second host.
|
|
4
|
+
Follow the [getting-started guide](getting-started.md) for installation and your
|
|
5
|
+
first task. Neither Claude Code nor Cursor has a verified complete V2 consumer
|
|
6
|
+
delivery yet.
|
|
7
|
+
|
|
8
|
+
The hosts share one `shaka` skill and the same Ruby helpers for GitHub
|
|
9
|
+
operations. Your repository keeps its existing `AGENTS.md`, commands, and policy.
|
|
10
|
+
Host-specific work covers installation, instruction loading, execution permissions,
|
|
11
|
+
and reading native usage records. It does not create three copies of the workflow.
|
|
12
|
+
|
|
13
|
+
## What has been verified
|
|
14
|
+
|
|
15
|
+
These observations were made on September 14 and 15, 2026. A successful install or CLI
|
|
16
|
+
startup does not establish a complete workflow, and workflow success does not
|
|
17
|
+
establish complete usage attribution.
|
|
18
|
+
|
|
19
|
+
| Capability | Codex CLI 0.154.0 | Claude Code desktop 2.1.270, CLI 2.1.272 | Cursor CLI 2026.09.10-fd3934a |
|
|
20
|
+
| --- | --- | --- | --- |
|
|
21
|
+
| Installation and startup | Dedicated skill installation and explicit trusted-file startup checked. | A symlinked personal skill loaded in the desktop app and in `claude -p`; `/shaka` asked for the task and merge preference and stopped before edits. A same-named repository skill did not replace it. | Dedicated CLI package version/help checked; V2 instruction activation unverified. |
|
|
22
|
+
| OS write boundary | A native workspace sandbox denied writes to the separate trusted source, installed link, and link directory while allowing the session and target checkout. | No launcher or sandbox; the user's permission mode applies. Not separately probed. | Native V2 sandbox boundary unverified. |
|
|
23
|
+
| Real workflow | Protected PR operations exercised in V2. A fresh CLI task implemented and verified the Astro website guides using its repository instructions; the owning task handled publication. | Consumer delivery unverified. | Consumer delivery unverified. |
|
|
24
|
+
| Usage | Reader matched 14 real CLI responses and repeated-source input without double counting; attribution remains partial. | Reader matched an independent per-response aggregate for a desktop session with a subagent and two models, and Claude Code's own totals for two CLI runs. | Complete V2 token and effort reporting unverified. |
|
|
25
|
+
|
|
26
|
+
The Codex write test establishes that particular local boundary. It does not
|
|
27
|
+
establish equivalent behavior in the desktop app, other versions, or other hosts.
|
|
28
|
+
Repeated consumer use, including failed checks, changed PR heads, and Ask/Auto
|
|
29
|
+
stopping behavior, is still required before claiming broader adoption.
|
|
30
|
+
|
|
31
|
+
## Codex first
|
|
32
|
+
|
|
33
|
+
Use the canonical [startup instructions](getting-started.md).
|
|
34
|
+
Keep the trusted workflow source and installed link outside both the writable
|
|
35
|
+
session directory and target checkout. The guided startup names the trusted skill for the agent; do not add a discovery
|
|
36
|
+
link inside the writable session.
|
|
37
|
+
|
|
38
|
+
The launcher or direct invocation must establish the intended permissions even
|
|
39
|
+
when the user's existing configuration grants broader access. Temporary writable
|
|
40
|
+
directories also count: placing the trusted skill in a system temporary directory
|
|
41
|
+
can undermine an otherwise separate installation. See the
|
|
42
|
+
[Codex permissions documentation](https://learn.chatgpt.com/docs/permissions)
|
|
43
|
+
for the host's controls; the getting-started guide owns the tested V2 recipe.
|
|
44
|
+
|
|
45
|
+
## Startup boundary and current validation
|
|
46
|
+
|
|
47
|
+
Each launch creates a private temporary session outside the consumer checkout,
|
|
48
|
+
reads the trusted skill by its absolute source path, and directs repository
|
|
49
|
+
commands to the checkout. It adds no skill link to that writable session. The
|
|
50
|
+
launcher rejects canonical or lexical overlaps between writable paths and the
|
|
51
|
+
trusted source or installed command/link parents. If your `TMPDIR` is inside the
|
|
52
|
+
target checkout, choose a temporary directory outside it before launching.
|
|
53
|
+
|
|
54
|
+
The native shell sandbox permits writes in the session and target checkout,
|
|
55
|
+
overrides extra writable roots, excludes ambient temporary directories, and uses
|
|
56
|
+
approval prompts for this launch. It sets shell `TMPDIR` and zsh `TMPPREFIX`
|
|
57
|
+
inside the session's temporary directory. It leaves authentication and model settings
|
|
58
|
+
alone. Session scratch stays in the system temporary directory after Codex exits;
|
|
59
|
+
the launcher leaves no background process. Codex still shows its native directory
|
|
60
|
+
trust and command-approval prompts; the launcher does not bypass them.
|
|
61
|
+
|
|
62
|
+
On Codex CLI 0.154.0, separate startup and native sandbox probes kept candidate
|
|
63
|
+
skill metadata out of the initial prompt and denied writes to the trusted source,
|
|
64
|
+
installed link, and link parent while permitting session and checkout writes.
|
|
65
|
+
A live terminal trial verified temporary-file access, protected-file write denial,
|
|
66
|
+
and automatic native usage discovery. A separate native sandbox check reproduced
|
|
67
|
+
and corrected zsh heredoc failures using the session temp prefix. Launcher tests
|
|
68
|
+
verify the executed arguments and path refusals. App startup,
|
|
69
|
+
other host versions, and complete isolation remain unverified. The sandbox does
|
|
70
|
+
not establish that dependencies are trustworthy or remove secrets from published
|
|
71
|
+
text. Do not approve an escape merely to make a check pass.
|
|
72
|
+
|
|
73
|
+
## Claude Code
|
|
74
|
+
|
|
75
|
+
Use the [Claude Code install recipe](getting-started.md#use-shaka-in-claude-code).
|
|
76
|
+
Claude Code runs a personal skill instead of a same-named skill in a repository's
|
|
77
|
+
`.claude/skills`, as its [skill locations](https://code.claude.com/docs/en/skills)
|
|
78
|
+
document; the September 15 trial confirmed this with a canary repository copy.
|
|
79
|
+
There is no `shaka work` launcher for Claude Code. Start `claude` in the repository,
|
|
80
|
+
keep the trusted source outside any `--add-dir` directory, and rely on the permission
|
|
81
|
+
mode you already use. The next required evidence is a complete ordinary consumer PR
|
|
82
|
+
delivered with `/shaka`.
|
|
83
|
+
|
|
84
|
+
## Cursor
|
|
85
|
+
|
|
86
|
+
Keep an existing, authenticated host configuration in place when preparing a
|
|
87
|
+
compatibility trial. Check its version and available controls before starting.
|
|
88
|
+
Native `SKILL.md` support is [documented for Cursor](https://cursor.com/docs/skills),
|
|
89
|
+
but shared file format alone does not prove V2 activation or safe execution.
|
|
90
|
+
|
|
91
|
+
Cursor user skills can be installed at `~/.cursor/skills` with the standard
|
|
92
|
+
installer. A September 14 trial did not find the skill through `~/.agents/skills`,
|
|
93
|
+
so use the Cursor-specific directory and still confirm discovery in a new Agent chat.
|
|
94
|
+
The trial did not establish a complete Cursor workflow or a supported launch recipe.
|
|
95
|
+
|
|
96
|
+
The checked Cursor CLI exposes `--workspace`, `--add-dir`, `--sandbox`, and
|
|
97
|
+
`--plugin-dir`. Its public help has no direct skill-file option. The native sandbox
|
|
98
|
+
and V2 delivery have not been exercised, so these flags are not sufficient grounds
|
|
99
|
+
for a supported launch recipe.
|
|
100
|
+
|
|
101
|
+
Inspect the targets in the [official Cursor installation instructions](https://cursor.com/docs/cli/installation)
|
|
102
|
+
before installing. The inspected upstream installer creates both `agent` and
|
|
103
|
+
`cursor-agent` commands; those names can collide with another installed tool.
|
|
104
|
+
Prefer an existing signed-in host for a trial. The dedicated package startup check
|
|
105
|
+
did not change global command links or establish a general installation method.
|
|
106
|
+
|
|
107
|
+
## Usage is a separate capability
|
|
108
|
+
|
|
109
|
+
Follow [usage reporting](usage-reporting.md) for the supported reader, available
|
|
110
|
+
fields, and attribution limits. Record host/version separately from provider/model.
|
|
111
|
+
Preserve native reasoning settings and cache categories; similarly named settings
|
|
112
|
+
across hosts are not equivalent measurements.
|
|
113
|
+
|
|
114
|
+
Report missing data as `UNKNOWN`, and label shared or partial coverage. Publish
|
|
115
|
+
aggregate metadata only, without prompts, raw sessions, account details, or local
|
|
116
|
+
paths. Missing usage does not block an otherwise authorized merge, and CLI startup
|
|
117
|
+
does not establish model usage or savings.
|
data/docs/packaging.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Build and test the pilot gem
|
|
2
|
+
|
|
3
|
+
The gem packages the same skill, installer, and Ruby helpers as the source checkout.
|
|
4
|
+
It adds no runtime gems and does not install a global agent profile. This is a local
|
|
5
|
+
prerelease package; nothing has been published to RubyGems.org.
|
|
6
|
+
|
|
7
|
+
Build from the trusted source directory; RubyGems reads package files relative
|
|
8
|
+
to the working directory. With the source installation from the first-use guide:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
cd "$HOME/agent-tools/shaka"
|
|
12
|
+
gem build shaka.gemspec
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
To try the built package without changing your application bundle or normal gem
|
|
16
|
+
installation, use a separate gem home. These environment values apply only to the
|
|
17
|
+
individual commands:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
shaka_gem_home=$(mktemp -d)
|
|
21
|
+
GEM_HOME="$shaka_gem_home" GEM_PATH="$shaka_gem_home" gem install --local --no-document ./shaka-0.1.0.pre.1.gem
|
|
22
|
+
GEM_HOME="$shaka_gem_home" GEM_PATH="$shaka_gem_home" "$shaka_gem_home/bin/shaka" --help
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Keep this temporary home for packaging checks only. A real pilot installation must
|
|
26
|
+
keep its trusted source outside the agent's writable directories, including any
|
|
27
|
+
temporary directories the host allows. Do not export the test gem environment into
|
|
28
|
+
your application's shell or add the pilot to its Gemfile.
|
|
29
|
+
|
|
30
|
+
The package also contains `shaka-install --skills-dir DIR`, which calls
|
|
31
|
+
the existing explicit-directory installer. Use it only when you want a link in a
|
|
32
|
+
chosen skill directory. It preserves existing content and refuses to replace a
|
|
33
|
+
different source. The [first-use guide](getting-started.md) explains the trusted
|
|
34
|
+
source and host startup boundaries.
|
|
35
|
+
|
|
36
|
+
## Upgrade, rollback, and removal
|
|
37
|
+
|
|
38
|
+
RubyGems installs each version in its own directory. A manually installed skill
|
|
39
|
+
link keeps pointing to its original version. To change that link, inspect its
|
|
40
|
+
destination, remove only the known pilot symlinks, then run the new version's
|
|
41
|
+
installer. Do not remove a foreign directory or silently repoint another skill.
|
|
42
|
+
You can retain the prior gem version and relink it for rollback.
|
|
43
|
+
|
|
44
|
+
Remove the pilot `shaka` skill link before uninstalling the version it points to. For the
|
|
45
|
+
isolated packaging check above:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
GEM_HOME="$shaka_gem_home" GEM_PATH="$shaka_gem_home" gem uninstall shaka --all --executables
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A two-version artifact trial also confirmed explicit upgrade and rollback while
|
|
52
|
+
preserving an existing skill link. The package test builds and installs the actual gem into a temporary home, runs
|
|
53
|
+
the installed helper and installer from outside the source checkout, then removes
|
|
54
|
+
the package. Existing installer tests cover repeat installation, collisions, and
|
|
55
|
+
source updates. These checks validate the artifact; they do not establish host
|
|
56
|
+
compatibility or authorize a registry release.
|
|
57
|
+
|
|
58
|
+
The provisional package is `shaka` version `0.1.0.pre.1`, distributed under the
|
|
59
|
+
[MIT license](../LICENSE). The gem includes the license and declares it in its metadata.
|
|
60
|
+
Registry publication still requires separate approval. Packaging uses [standard RubyGems tooling](https://guides.rubygems.org/make-your-own-gem/).
|