@soku-ai/cli 0.1.0-alpha.11 → 0.1.0-alpha.13

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.
@@ -0,0 +1,137 @@
1
+ # Ads Writes
2
+
3
+ Meta and Google write commands use typed CLI surfaces where available. Most
4
+ delivery-changing writes are review-gated: the command creates a pending review
5
+ and does not execute until a human approves.
6
+
7
+ ## Prerequisites
8
+
9
+ ```bash
10
+ soku auth login --no-wait
11
+ soku workspace status
12
+ soku ads list-ad-accounts --platform meta
13
+ ```
14
+
15
+ A default login can reach ads writes (no resource needed); each
16
+ delivery-changing write still returns a pending review for a human to approve.
17
+
18
+ ## Meta Account Helpers
19
+
20
+ ```bash
21
+ soku ads meta account pages --account-id <meta_account_id>
22
+ soku ads meta campaign get --account-id <meta_account_id> --campaign-id <campaign_id>
23
+ soku ads meta ad get --account-id <meta_account_id> --ad-id <ad_id>
24
+ ```
25
+
26
+ ## Meta Assets
27
+
28
+ Image upload mutates the Meta asset library but does not change delivery, so it
29
+ executes immediately and returns `image_hash` values:
30
+
31
+ ```bash
32
+ soku ads meta asset upload-images --account-id <meta_account_id> ./hero.png ./square.jpg
33
+ soku ads meta asset upload-images --account-id <meta_account_id> \
34
+ --url https://example.com/hero.png --name-prefix launch
35
+ ```
36
+
37
+ ## Meta Single-Object Flow
38
+
39
+ Always inspect help for the exact flags before using a new command:
40
+
41
+ ```bash
42
+ soku ads meta campaign create --help
43
+ soku ads meta adset create --help
44
+ soku ads meta creative create --help
45
+ soku ads meta ad create --help
46
+ ```
47
+
48
+ Common flow:
49
+
50
+ ```bash
51
+ soku ads meta campaign create \
52
+ --account-id <meta_account_id> \
53
+ --name "Launch Test" \
54
+ --objective OUTCOME_TRAFFIC \
55
+ --summary "Create paused Meta traffic campaign Launch Test"
56
+
57
+ soku ads meta adset create \
58
+ --account-id <meta_account_id> \
59
+ --campaign-id <campaign_id> \
60
+ --name "US Prospecting" \
61
+ --optimization-goal LINK_CLICKS \
62
+ --billing-event IMPRESSIONS \
63
+ -p targeting='{"geo_locations":{"countries":["US"]}}' \
64
+ --summary "Create paused Meta ad set US Prospecting"
65
+
66
+ soku ads meta creative create \
67
+ --account-id <meta_account_id> \
68
+ --name "Hero image creative" \
69
+ --page-id <page_id> \
70
+ --image-hash <image_hash> \
71
+ --message "Primary text" \
72
+ --headline "Headline" \
73
+ --link https://example.com \
74
+ --call-to-action-type LEARN_MORE \
75
+ --summary "Create Meta image creative for Launch Test"
76
+
77
+ soku ads meta ad create \
78
+ --account-id <meta_account_id> \
79
+ --adset-id <adset_id> \
80
+ --name "Hero image ad" \
81
+ --creative-id <creative_id> \
82
+ --summary "Create paused Meta ad Hero image ad"
83
+ ```
84
+
85
+ Status controls exist at delivery levels:
86
+
87
+ ```bash
88
+ soku ads meta campaign activate --campaign-id <campaign_id> --account-id <meta_account_id> --summary "Activate campaign"
89
+ soku ads meta adset pause --adset-id <adset_id> --account-id <meta_account_id> --summary "Pause ad set"
90
+ soku ads meta ad pause --ad-id <ad_id> --account-id <meta_account_id> --summary "Pause ad"
91
+ ```
92
+
93
+ ## Bulk Meta Create
94
+
95
+ Bulk commands are one layer at a time. Each item in `--items-file` must be an
96
+ object with a unique non-empty `client_ref`.
97
+
98
+ ```bash
99
+ soku ads meta campaign bulk-create --account-id <meta_account_id> --items-file campaigns.json --summary "Bulk-create campaigns"
100
+ soku ads meta adset bulk-create --account-id <meta_account_id> --items-file adsets.json --summary "Bulk-create ad sets"
101
+ soku ads meta creative bulk-create --account-id <meta_account_id> --items-file creatives.json --summary "Bulk-create creatives"
102
+ soku ads meta ad bulk-create --account-id <meta_account_id> --items-file ads.json --summary "Bulk-create ads"
103
+ ```
104
+
105
+ After approval, bulk reviews execute asynchronously. Poll with:
106
+
107
+ ```bash
108
+ soku review show <review_id>
109
+ ```
110
+
111
+ ## Google Ads Writes
112
+
113
+ Use:
114
+
115
+ ```bash
116
+ soku ads google --help
117
+ soku ads google campaign --help
118
+ soku ads google ad-group --help
119
+ soku ads google ad --help
120
+ soku ads google keyword --help
121
+ ```
122
+
123
+ The command path determines platform. Do not add `--platform`; the CLI injects
124
+ `platform=google`.
125
+
126
+ ## Review Gate
127
+
128
+ Review-gated commands return a review id:
129
+
130
+ ```bash
131
+ soku review list
132
+ soku review show <review_id>
133
+ ```
134
+
135
+ As an agent, show the review id and summary to the user. Do not approve on the
136
+ user's behalf. Approval is single-use; failed approval is terminal, so create a
137
+ fresh review for retry.
@@ -0,0 +1,79 @@
1
+ # Authentication And Workspace
2
+
3
+ Soku CLI auth is machine-level and org-agnostic. The active org and brand are
4
+ selected separately and sent on each workspace-scoped request.
5
+
6
+ ## Agent Login: Non-Blocking Split Flow
7
+
8
+ Do not block a turn waiting for browser approval. Start login with:
9
+
10
+ ```bash
11
+ soku auth login --no-wait
12
+ ```
13
+
14
+ Return the exact `verification_uri` and `user_code` to the user, then stop. Do
15
+ not edit, re-encode, or reconstruct the URL. After the user approves, resume
16
+ with the exact `next` command returned by the CLI:
17
+
18
+ ```bash
19
+ soku auth login --device-code <device_code>
20
+ ```
21
+
22
+ For CI or headless contexts, use `SOKU_TOKEN`; do not echo it.
23
+
24
+ ## Resources
25
+
26
+ The CLI resource model has been retired — `--resource` is **no longer needed
27
+ for anything**. A default `soku auth login` reaches the entire CLI surface: all
28
+ data commands (`soku ads / ga4 / posthog / call ...`) **and** every sub-command
29
+ (`soku seo-hosting / automation / files / context / brand skill ...`). Writes
30
+ still return a HITL review the user approves; that is the only gate left
31
+ (besides the active org/brand). The `--resource` flag and the `soku resources`
32
+ command have been removed from the CLI.
33
+
34
+ ## Workspace
35
+
36
+ Never infer Soku workspace state from the local shell directory.
37
+
38
+ ```bash
39
+ soku workspace status
40
+ soku workspace resolve <brand>
41
+ soku workspace use-brand <brand>
42
+ ```
43
+
44
+ If `resolve` is ambiguous, show the candidates and ask the user which exact
45
+ brand/org to use. For one-off scripts, `SOKU_ORG_ID` and `SOKU_BRAND_ID` can
46
+ override saved config.
47
+
48
+ Legacy commands still work, but prefer `workspace` for agent flows:
49
+
50
+ ```bash
51
+ soku org list
52
+ soku org use <slug-or-id>
53
+ soku brand list
54
+ soku brand use <slug-or-id>
55
+ ```
56
+
57
+ ## Session State
58
+
59
+ ```bash
60
+ soku auth status
61
+ soku auth logout
62
+ ```
63
+
64
+ On exit code 2 with an expired or revoked token, the CLI drops the stored token.
65
+ Run the split login flow again.
66
+
67
+ ## Brand Memory
68
+
69
+ Memory is scoped to the active Soku workspace:
70
+
71
+ ```bash
72
+ soku memory list
73
+ soku memory search "policy"
74
+ soku memory get reference noiz-policy-event
75
+ ```
76
+
77
+ Use memory as background and investigation leads. Do not report memory-derived
78
+ context as verified fact unless the same turn confirms it with data actions,
79
+ change history, billing evidence, or another authoritative source.
@@ -1,44 +1,53 @@
1
- # Capability discovery flow
1
+ # Capability Discovery Flow
2
2
 
3
- A worked example of the discover inspect run loop the agent should follow.
4
- Each data capability is a typed sub-command under its namespace; `--help` is the
5
- discovery and inspection surface.
3
+ Use this discover -> inspect -> run loop for data capabilities. `--help` is the
4
+ authoritative runtime surface for command names, flags, required params, and
5
+ usage notes.
6
6
 
7
- ## 1. Confirm what's granted
7
+ ## 1. Confirm Workspace
8
8
 
9
9
  ```bash
10
- soku resources list
10
+ soku auth status
11
+ soku workspace status
11
12
  ```
12
13
 
13
- ```json
14
- {"ok":true,"data":{"resources":[{"id":"data-infra","label":"Data Infra","description":"Read-only Soku synchronized data actions for ads and GA4.","enabled":true}],"count":1}}
15
- ```
14
+ A default `soku auth login` reaches the entire CLI surface — there is no
15
+ resource model to grant or check (writes are still HITL-approved). Just make
16
+ sure you are signed in and pointed at the right org/brand.
16
17
 
17
- ## 2. Discover namespaces and actions with --help
18
+ ## 2. Discover Namespaces
18
19
 
19
20
  ```bash
20
- soku --help # top level: namespaces (ads, ga4, …) plus auth/org/brand
21
- soku ads --help # actions in the ads namespace
22
- soku ga4 --help # actions in the ga4 namespace
21
+ soku --help
22
+ soku ads --help
23
+ soku ga4 --help
24
+ soku posthog --help
23
25
  ```
24
26
 
25
- Common ads actions:
27
+ Common read actions:
26
28
 
27
- - `soku ads list-ad-accounts` — discover account_id values (run first when you have none)
28
- - `soku ads list-dimensions` — discover queryable dimensions/metrics/filters
29
- - `soku ads query-single-dimension`, `soku ads query-multi-dimension` — metric queries
30
- - `soku ads gaql-search` — raw Google Ads GAQL
31
- - `soku ga4 list-properties`, `soku ga4 get-property-overview`, `soku ga4 list-top-pages`, …
29
+ - `soku ads list-ad-accounts`
30
+ - `soku ads list-dimensions`
31
+ - `soku ads query-single-dimension`
32
+ - `soku ads query-multi-dimension`
33
+ - `soku ads gaql-search`
34
+ - `soku ga4 list-properties`
35
+ - `soku ga4 get-property-overview`
36
+ - `soku posthog list-projects`
37
+ - `soku posthog list-tools`
38
+ - `soku posthog query`
32
39
 
33
- ## 3. Inspect a command's flags before running
40
+ ## 3. Inspect Before Running
34
41
 
35
42
  ```bash
36
43
  soku ads query-single-dimension --help
37
44
  ```
38
45
 
39
- The help is authoritative for flag names, required vs optional, types, and the
40
- appended usage notes. Never guess flags — read `--help` first. Object/list flags
41
- take a JSON string (e.g. `--filters '{"campaign_id":["123"]}'`).
46
+ Never guess flags. Object and list flags take JSON strings, for example:
47
+
48
+ ```bash
49
+ soku ads query-single-dimension --filters '{"campaign_id":["123"]}'
50
+ ```
42
51
 
43
52
  ## 4. Run
44
53
 
@@ -51,21 +60,19 @@ soku ads query-single-dimension \
51
60
  --date-end 2026-05-07
52
61
  ```
53
62
 
54
- ## Raw escape hatch
63
+ ## Raw Escape Hatch
55
64
 
56
- When no typed sub-command exists for an action (e.g. a newer action than this
57
- CLI version ships), call it by its raw snake_case name:
65
+ Use raw calls only when a typed sub-command is missing:
58
66
 
59
67
  ```bash
60
- soku call ads query_single_dimension --payload '{"account_id":"1234567890","dimension":"campaign","date_start":"2026-05-01","date_end":"2026-05-07"}'
68
+ soku call ads query_single_dimension \
69
+ --payload '{"account_id":"1234567890","dimension":"campaign","date_start":"2026-05-01","date_end":"2026-05-07"}'
61
70
  ```
62
71
 
63
- ## Typical chaining
64
-
65
- 1. `soku ads list-ad-accounts` → pick an `account_id`.
66
- 2. `soku ads list-dimensions` → learn valid dimension/metric slugs for that account.
67
- 3. `soku ads query-single-dimension` / `query-multi-dimension` with the chosen
68
- `--account-id` + slugs.
72
+ ## Typical Chaining
69
73
 
70
- Each command's `--help` lists related actions (`see_also`) so you can jump
71
- between them without re-scanning everything.
74
+ 1. `soku ads list-ad-accounts` -> pick `account_id`.
75
+ 2. `soku ads list-dimensions` -> learn legal dimensions, metrics, and filters.
76
+ 3. `soku ads query-single-dimension` or `query-multi-dimension`.
77
+ 4. Use `gaql-search` only if cached actions cannot expose the needed
78
+ Google-native field or segment combination.
@@ -0,0 +1,118 @@
1
+ # Data Capabilities
2
+
3
+ Use typed commands for read workflows. Read `capability-flow.md` first when you
4
+ are unfamiliar with the namespace.
5
+
6
+ ## Ads: Cached First
7
+
8
+ Start with account and schema discovery:
9
+
10
+ ```bash
11
+ soku ads list-ad-accounts --platform google
12
+ soku ads list-dimensions --platform google --account-id <account_id>
13
+ ```
14
+
15
+ Use cached analytics for normal reporting:
16
+
17
+ ```bash
18
+ soku ads query-single-dimension \
19
+ --account-id <account_id> \
20
+ --dimension campaign \
21
+ --date-start 2026-05-01 \
22
+ --date-end 2026-05-07
23
+
24
+ soku ads query-multi-dimension \
25
+ --account-id <account_id> \
26
+ --dimensions '["campaign","device"]' \
27
+ --date-start 2026-05-01 \
28
+ --date-end 2026-05-07
29
+ ```
30
+
31
+ Use `query-single-dimension` for CPA, ROAS, conversion group fan-out, or one
32
+ dimension. Use `query-multi-dimension` for raw multi-dimensional breakdowns.
33
+
34
+ `--platform` accepts `google`, `meta`, `tiktok`, or `chatgpt_ads`:
35
+
36
+ ```bash
37
+ soku ads list-ad-accounts --platform chatgpt_ads
38
+ soku ads query-single-dimension \
39
+ --platform chatgpt_ads \
40
+ --account-id <account_id> \
41
+ --dimension campaign \
42
+ --date-start 2026-05-01 \
43
+ --date-end 2026-05-07
44
+ ```
45
+
46
+ ChatGPT Ads is synced reporting only — no campaign/ad write actions, and
47
+ `query-multi-dimension` does not support it (use `query-single-dimension`
48
+ instead).
49
+
50
+ ## Google Ads GAQL Fallback
51
+
52
+ Use GAQL only when cached actions cannot answer the request:
53
+
54
+ ```bash
55
+ soku ads get-resource-metadata --platform google --account-id <account_id> --resource-name campaign
56
+ soku ads gaql-search \
57
+ --platform google \
58
+ --account-id <account_id> \
59
+ --dimensions '["date","campaign"]' \
60
+ --metrics '["cost","clicks"]' \
61
+ --limit 20
62
+ ```
63
+
64
+ Do not write full `SELECT ... FROM ...` GAQL SQL. `gaql-search` takes structured
65
+ `dimensions`, `metrics`, `filters`, `date_range`, `order_by`, and `limit`; the
66
+ server translates them.
67
+
68
+ ## GA4
69
+
70
+ Prefer cached overview commands:
71
+
72
+ ```bash
73
+ soku ga4 list-properties
74
+ soku ga4 get-property-overview --property-id <property_id>
75
+ soku ga4 list-top-pages --property-id <property_id>
76
+ soku ga4 list-traffic-sources --property-id <property_id>
77
+ soku ga4 get-daily-trend --property-id <property_id>
78
+ soku ga4 get-conversion-overview --property-id <property_id>
79
+ soku ga4 list-events --property-id <property_id>
80
+ ```
81
+
82
+ Use live fallback only for dimensions, metrics, filters, or custom definitions
83
+ not covered by cached commands:
84
+
85
+ ```bash
86
+ soku ga4 get-metadata --property-id <property_id>
87
+ soku ga4 run-report \
88
+ --property-id <property_id> \
89
+ --metrics '["activeUsers"]' \
90
+ --dimensions '["sessionDefaultChannelGroup"]'
91
+ ```
92
+
93
+ ## PostHog
94
+
95
+ Do not ask the user for a project id before listing accessible projects:
96
+
97
+ ```bash
98
+ soku posthog list-projects
99
+ soku posthog list-tools --project-id <project_id>
100
+ soku posthog query --project-id <project_id> --tool read-data-schema --arguments '{}'
101
+ soku posthog query --project-id <project_id> --tool execute-sql \
102
+ --arguments '{"query":"SELECT count() FROM events WHERE event = '\''$pageview'\''"}'
103
+ ```
104
+
105
+ The CLI exposes read allowlisted PostHog tools. Writes and unvetted MCP tools
106
+ stay outside the generated command tree.
107
+
108
+ ## Raw Calls
109
+
110
+ Use `soku call <namespace> <action>` only when a typed command is missing:
111
+
112
+ ```bash
113
+ soku call ads list_ad_accounts -p platform=google
114
+ soku call ads query_single_dimension --payload '{"account_id":"123","dimension":"campaign"}'
115
+ soku call posthog query --payload '{"project_id":"12345","tool":"execute-sql","arguments":{"query":"SELECT count() FROM events"}}'
116
+ ```
117
+
118
+ Review-gated writes through `soku call` require `--summary`.
@@ -0,0 +1,51 @@
1
+ # Egress And Security
2
+
3
+ Use `soku egress` for covered third-party APIs. Soku injects provider
4
+ credentials server-side; no third-party API key lives on this machine.
5
+
6
+ ## Egress Pattern
7
+
8
+ Prefix the skill's `curl` with `soku egress --`:
9
+
10
+ ```bash
11
+ soku egress -- curl -H "Authorization: Bearer $AHREFS_API_KEY" "https://api.ahrefs.com/v3/..."
12
+ ```
13
+
14
+ `$AHREFS_API_KEY` may be unset locally. That is expected. The CLI strips empty
15
+ placeholder auth and the Soku API injects the real credential.
16
+
17
+ List covered hosts:
18
+
19
+ ```bash
20
+ soku egress providers
21
+ ```
22
+
23
+ For a host not listed, the proxy does not inject credentials. Follow that
24
+ skill's own auth instructions instead.
25
+
26
+ ## Do Not Preflight Local Keys
27
+
28
+ Do not write guards such as:
29
+
30
+ ```bash
31
+ test -n "$AHREFS_API_KEY"
32
+ ```
33
+
34
+ Do not abort a skill because a key looks missing. Route the call through
35
+ `soku egress -- curl ...`.
36
+
37
+ ## Response Semantics
38
+
39
+ Successful upstream responses are returned verbatim on stdout, not wrapped in a
40
+ success envelope. Soku-level failures use the normal CLI error envelope.
41
+
42
+ ## General Security Rules
43
+
44
+ - Never print the Soku access token.
45
+ - Prefer `SOKU_TOKEN` for CI and headless agents.
46
+ - Do not approve review-gated writes on behalf of the user.
47
+ - Avoid literal secret argv values. For Cloudflare Worker setup use
48
+ `--cf-token-env` or `--cf-token-stdin`.
49
+ - Pass user-provided values as separate argv elements.
50
+ - Treat `verification_uri`, signed URLs, review ids, and provider URLs as
51
+ opaque strings.
@@ -0,0 +1,93 @@
1
+ # SEO Hosting, Automations, And Files
2
+
3
+ These commands operate on the active Soku workspace. Confirm workspace first:
4
+
5
+ ```bash
6
+ soku workspace status
7
+ ```
8
+
9
+ ## SEO Hosting Pages
10
+
11
+ SEO Hosting pages are complete HTML documents, not Markdown. They are addressed
12
+ by `section` and `slug`.
13
+
14
+ ```bash
15
+ soku seo-hosting status
16
+ soku seo-hosting pages list --section blog --status draft
17
+ soku seo-hosting pages put --section blog --slug how-to --title "How to ..." --html-file page.html
18
+ soku seo-hosting pages publish --section blog --slug how-to
19
+ soku seo-hosting pages unpublish --section blog --slug how-to
20
+ soku seo-hosting pages delete --section blog --slug how-to --confirm
21
+ soku seo-hosting pages upload-asset --path blog/how-to/hero.png --file ./hero.png
22
+ ```
23
+
24
+ Run `status` before publishing. If no domain is live for the section, do not
25
+ publish yet.
26
+
27
+ `put` creates or overwrites a draft and requires exactly one HTML source:
28
+ `--html`, `--html-file`, or `--html-stdin`. Reference uploaded assets by the
29
+ absolute URL returned from `upload-asset`. No custom JavaScript.
30
+
31
+ Writes run immediately. Confirm user intent before publishing or deleting.
32
+
33
+ ## SEO Hosting Domain Connections
34
+
35
+ ```bash
36
+ soku seo-hosting connections list
37
+ soku seo-hosting connections connect-cname --hostname blog.example.com
38
+ soku seo-hosting connections verify <connection_id>
39
+ soku seo-hosting connections disconnect <connection_id> --confirm
40
+ ```
41
+
42
+ Cloudflare Worker reverse proxy setup:
43
+
44
+ ```bash
45
+ soku seo-hosting connections probe --hostname example.com --sections blog,use-cases
46
+ soku seo-hosting connections connect-worker --hostname example.com \
47
+ --sections blog,use-cases --cf-token-env CLOUDFLARE_API_TOKEN
48
+ printf %s "$CLOUDFLARE_API_TOKEN" | soku seo-hosting connections connect-worker \
49
+ --hostname example.com --sections blog --cf-token-stdin
50
+ ```
51
+
52
+ Never pass Cloudflare tokens as literal argv values. Use `--cf-token-env` or
53
+ `--cf-token-stdin`. Add conflict override flags only after the user confirms the
54
+ risk.
55
+
56
+ ## Automations
57
+
58
+ ```bash
59
+ soku automation list
60
+ soku automation create --name "Fast check" --prompt "Check account health" --cron "* * * * *" --timezone UTC
61
+ soku automation trigger <automation_id>
62
+ soku automation runs <automation_id>
63
+ ```
64
+
65
+ `create` requires exactly one schedule option:
66
+
67
+ - `--cron <expr>` with optional `--timezone <iana>` (default `UTC`).
68
+ - `--interval-seconds <seconds>`; at least 3600 and divisible by 60.
69
+ - `--once-at <iso>` for a one-time UTC instant.
70
+
71
+ `runs` prints a Studio link when a conversation exists. The CLI does not read
72
+ conversation content.
73
+
74
+ ## Context Hub
75
+
76
+ ```bash
77
+ soku context list
78
+ soku context upload ./brief.pdf --dir research
79
+ soku context mkdir research
80
+ soku context rename old/path new/path
81
+ soku context rm research/brief.pdf
82
+ ```
83
+
84
+ Paths are context-relative. Do not include a `context/` prefix.
85
+
86
+ ## Temporary Public File URLs
87
+
88
+ ```bash
89
+ soku files publish ./creative.png
90
+ ```
91
+
92
+ URLs are short-lived signed URLs, usually around 30 minutes. If a downstream API
93
+ later fails to fetch the file, check expiration first.
@@ -0,0 +1,89 @@
1
+ # Skills And Updates
2
+
3
+ Soku distributes two kinds of local agent skills:
4
+
5
+ - Bundled meta skill: `soku` teaches the CLI basics and references.
6
+ - Business skills: catalog skills installed as `soku-<slug>`, for example
7
+ `soku-ads-report`.
8
+
9
+ ## Install
10
+
11
+ Install the bundled meta skill:
12
+
13
+ ```bash
14
+ soku skill install
15
+ soku skill install --global
16
+ soku skill install --agent claude --global
17
+ ```
18
+
19
+ Install business skills:
20
+
21
+ ```bash
22
+ soku skill list
23
+ soku skill install account-audit
24
+ soku skill install ads-report google-ads
25
+ soku skill install --all
26
+ soku skill status
27
+ soku skill list-installed
28
+ ```
29
+
30
+ Business skill install automatically ensures the `soku` meta skill exists.
31
+ Installed business skill names are Soku-prefixed:
32
+
33
+ ```text
34
+ use @soku-ads-report skill
35
+ ```
36
+
37
+ Use catalog slugs for install/remove (`ads-report`) and agent names for
38
+ invocation (`soku-ads-report`).
39
+
40
+ ## Update
41
+
42
+ ```bash
43
+ soku update status
44
+ soku update skills
45
+ soku update cli
46
+ ```
47
+
48
+ Normal `soku` commands schedule a background skill refresh at most once every 24
49
+ hours. Controls:
50
+
51
+ ```bash
52
+ SOKU_NO_SKILL_AUTO_UPDATE=1
53
+ SOKU_UPDATE_INTERVAL_HOURS=6
54
+ SOKU_AUTO_UPDATE_CLI=1
55
+ ```
56
+
57
+ The CLI binary itself is advisory by default. Run `soku update cli` to install
58
+ the latest npm package unless the user explicitly opted into auto CLI updates.
59
+
60
+ ## Legacy Meta-Only Installs
61
+
62
+ Older installations may have only:
63
+
64
+ ```text
65
+ <skillsDir>/soku/SKILL.md
66
+ ```
67
+
68
+ with no `.soku-skills.json` manifest and no `references/` directory.
69
+ `soku update skills` detects those legacy meta-only installs, refreshes
70
+ `SKILL.md`, copies `references/`, and writes a Soku-managed manifest entry.
71
+
72
+ Global `npm i -g @soku-ai/cli` also refreshes already-installed global meta
73
+ skills after npm finishes installing. It does not install new business skills
74
+ and does not scan project-local directories.
75
+
76
+ `soku update cli` runs that same global `npm i -g` under the hood, so its JSON
77
+ result includes `mustRereadMetaSkill` and `metaSkillRefreshed: [<paths>]`. When
78
+ `mustRereadMetaSkill` is true, re-read this skill from the listed path(s)
79
+ before continuing — the on-disk copy just changed underneath this session.
80
+
81
+ ## Remove
82
+
83
+ ```bash
84
+ soku skill remove ads-report
85
+ soku skill remove soku
86
+ ```
87
+
88
+ Removing the last Soku-managed skill removes the local `.soku-skills.json`
89
+ manifest.
@@ -1,4 +0,0 @@
1
- /** `soku resources list` — show the external resources granted to this session. */
2
- import { Command } from 'commander';
3
- export declare function registerResourceCommands(program: Command): void;
4
- //# sourceMappingURL=resources.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0B/D"}