@hasna/skills 0.1.44 → 0.1.45

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/README.md CHANGED
@@ -114,6 +114,8 @@ requirements explicitly document local provider use.
114
114
  | `skills validate <name>` | | Check a skill's directory structure |
115
115
  | `skills schedule add <skill> <cron>` | | Set up recurring skill execution |
116
116
  | `skills schedule list` | | List all schedules (enabled/disabled/last run) |
117
+ | `skills storage status` | | Show local state paths and optional repo-native storage readiness |
118
+ | `skills storage sync-plan` | | Plan `.skills` Postgres/S3 snapshot sync without network access |
117
119
  | `skills mcp` | | Start MCP server on stdio |
118
120
  | `skills mcp --register claude` | | Register the Skills MCP server in an agent config (also `codex`, `gemini`, `opencode`, `all`) |
119
121
  | `skills self-update` | | Update this package to the latest version |
@@ -152,6 +154,9 @@ Stable command shapes:
152
154
  `skills exports download <run-id>`.
153
155
  - Config and schedules: `config * --json` and `schedule * --json` return
154
156
  machine-readable status objects.
157
+ - Storage: `storage status --json` returns local `.skills` paths and optional
158
+ repo-native remote readiness; `storage sync-plan --json` returns a no-network
159
+ snapshot plan.
155
160
  - MCP registration: `mcp --register <agent> --json` returns
156
161
  `{ "registered": number, "results": [...] }`.
157
162
 
@@ -249,6 +254,37 @@ Hosted account, billing, and credit management use the configured hosted API.
249
254
  The public package only stores local configuration and CLI credentials; Stripe,
250
255
  customer records, and hosted execution remain platform concerns.
251
256
 
257
+ ## Storage Boundary
258
+
259
+ Open Skills is local-first. Project runtime state stays in `.skills/`; global
260
+ config and auth stay under `~/.hasna/skills/`.
261
+
262
+ Optional repo-native sync can be configured without a hosted SaaS account:
263
+
264
+ ```bash
265
+ HASNA_SKILLS_STORAGE_MODE=hybrid # local | remote | hybrid
266
+ HASNA_SKILLS_DATABASE_URL=postgres://...
267
+ HASNA_SKILLS_S3_BUCKET=skills-artifacts
268
+ HASNA_SKILLS_S3_PREFIX=opensource/prod/skills
269
+
270
+ skills storage status
271
+ skills storage sync-plan --schema-sql
272
+ ```
273
+
274
+ Wrappers and deployment tooling can import the storage-only surface without
275
+ pulling in CLI/runtime helpers:
276
+
277
+ ```ts
278
+ import { getStorageStatus, resolveStorageConfig } from "@hasna/skills/storage";
279
+ ```
280
+
281
+ Plain `SKILLS_DATABASE_URL`, `SKILLS_STORAGE_MODE`, and `SKILLS_S3_BUCKET`
282
+ fallbacks are accepted for local development. Hosted wrappers must keep their
283
+ private SaaS `DATABASE_URL`, tenant tables, billing state, workers, and artifact
284
+ buckets separate; if they expose open-core storage, they should map explicit
285
+ wrapper envs into `HASNA_SKILLS_*` rather than passing the private SaaS database
286
+ implicitly.
287
+
252
288
  ## Project Structure
253
289
 
254
290
  ```