@hasna/skills 0.1.50 → 0.1.52

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/bin/index.js CHANGED
@@ -36860,7 +36860,7 @@ var package_default;
36860
36860
  var init_package = __esm(() => {
36861
36861
  package_default = {
36862
36862
  name: "@hasna/skills",
36863
- version: "0.1.50",
36863
+ version: "0.1.52",
36864
36864
  description: "Skills library for AI coding agents",
36865
36865
  type: "module",
36866
36866
  bin: {
@@ -36901,7 +36901,9 @@ var init_package = __esm(() => {
36901
36901
  "dev:watch": "bun --watch run ./src/cli/index.tsx",
36902
36902
  "dev:mcp": "bun --watch run ./src/mcp/index.ts",
36903
36903
  typecheck: "tsc --noEmit",
36904
- prepublishOnly: "bun run build",
36904
+ "verify:release": "bun run scripts/release-guard.ts",
36905
+ prepack: "bun run build && bun run verify:release",
36906
+ prepublishOnly: "bun run typecheck && bun run test",
36905
36907
  postinstall: "mkdir -p $HOME/.hasna/skills/custom 2>/dev/null || true"
36906
36908
  },
36907
36909
  keywords: [
@@ -40144,6 +40146,13 @@ var init_project_management = __esm(() => {
40144
40146
  description: "Facilitate project retrospectives with structured reflection and action items",
40145
40147
  category: "Project Management",
40146
40148
  tags: ["retrospective", "project", "feedback", "improvement"]
40149
+ },
40150
+ {
40151
+ name: "project-dashboard-reports",
40152
+ displayName: "Project Dashboard Reports",
40153
+ description: "Create, validate, and serve standardized Hasna project dashboard reports",
40154
+ category: "Project Management",
40155
+ tags: ["projects", "dashboard", "reports", "json-render"]
40147
40156
  }
40148
40157
  ];
40149
40158
  });
package/bin/mcp.js CHANGED
@@ -21819,7 +21819,7 @@ class StdioServerTransport {
21819
21819
  // package.json
21820
21820
  var package_default = {
21821
21821
  name: "@hasna/skills",
21822
- version: "0.1.50",
21822
+ version: "0.1.52",
21823
21823
  description: "Skills library for AI coding agents",
21824
21824
  type: "module",
21825
21825
  bin: {
@@ -21860,7 +21860,9 @@ var package_default = {
21860
21860
  "dev:watch": "bun --watch run ./src/cli/index.tsx",
21861
21861
  "dev:mcp": "bun --watch run ./src/mcp/index.ts",
21862
21862
  typecheck: "tsc --noEmit",
21863
- prepublishOnly: "bun run build",
21863
+ "verify:release": "bun run scripts/release-guard.ts",
21864
+ prepack: "bun run build && bun run verify:release",
21865
+ prepublishOnly: "bun run typecheck && bun run test",
21864
21866
  postinstall: "mkdir -p $HOME/.hasna/skills/custom 2>/dev/null || true"
21865
21867
  },
21866
21868
  keywords: [
@@ -31141,6 +31143,13 @@ var PROJECT_MANAGEMENT_SKILLS = [
31141
31143
  description: "Facilitate project retrospectives with structured reflection and action items",
31142
31144
  category: "Project Management",
31143
31145
  tags: ["retrospective", "project", "feedback", "improvement"]
31146
+ },
31147
+ {
31148
+ name: "project-dashboard-reports",
31149
+ displayName: "Project Dashboard Reports",
31150
+ description: "Create, validate, and serve standardized Hasna project dashboard reports",
31151
+ category: "Project Management",
31152
+ tags: ["projects", "dashboard", "reports", "json-render"]
31144
31153
  }
31145
31154
  ];
31146
31155
 
package/dist/index.js CHANGED
@@ -2346,6 +2346,13 @@ var PROJECT_MANAGEMENT_SKILLS = [
2346
2346
  description: "Facilitate project retrospectives with structured reflection and action items",
2347
2347
  category: "Project Management",
2348
2348
  tags: ["retrospective", "project", "feedback", "improvement"]
2349
+ },
2350
+ {
2351
+ name: "project-dashboard-reports",
2352
+ displayName: "Project Dashboard Reports",
2353
+ description: "Create, validate, and serve standardized Hasna project dashboard reports",
2354
+ category: "Project Management",
2355
+ tags: ["projects", "dashboard", "reports", "json-render"]
2349
2356
  }
2350
2357
  ];
2351
2358
 
@@ -18833,7 +18840,7 @@ import { dirname as dirname4, relative as relative3 } from "path";
18833
18840
  // package.json
18834
18841
  var package_default = {
18835
18842
  name: "@hasna/skills",
18836
- version: "0.1.50",
18843
+ version: "0.1.52",
18837
18844
  description: "Skills library for AI coding agents",
18838
18845
  type: "module",
18839
18846
  bin: {
@@ -18874,7 +18881,9 @@ var package_default = {
18874
18881
  "dev:watch": "bun --watch run ./src/cli/index.tsx",
18875
18882
  "dev:mcp": "bun --watch run ./src/mcp/index.ts",
18876
18883
  typecheck: "tsc --noEmit",
18877
- prepublishOnly: "bun run build",
18884
+ "verify:release": "bun run scripts/release-guard.ts",
18885
+ prepack: "bun run build && bun run verify:release",
18886
+ prepublishOnly: "bun run typecheck && bun run test",
18878
18887
  postinstall: "mkdir -p $HOME/.hasna/skills/custom 2>/dev/null || true"
18879
18888
  },
18880
18889
  keywords: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/skills",
3
- "version": "0.1.50",
3
+ "version": "0.1.52",
4
4
  "description": "Skills library for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,7 +41,9 @@
41
41
  "dev:watch": "bun --watch run ./src/cli/index.tsx",
42
42
  "dev:mcp": "bun --watch run ./src/mcp/index.ts",
43
43
  "typecheck": "tsc --noEmit",
44
- "prepublishOnly": "bun run build",
44
+ "verify:release": "bun run scripts/release-guard.ts",
45
+ "prepack": "bun run build && bun run verify:release",
46
+ "prepublishOnly": "bun run typecheck && bun run test",
45
47
  "postinstall": "mkdir -p $HOME/.hasna/skills/custom 2>/dev/null || true"
46
48
  },
47
49
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  # Required API Keys
2
- OPENAI_API_KEY=sk-your-openai-api-key
3
- ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key
2
+ OPENAI_API_KEY=your-openai-api-key
3
+ ANTHROPIC_API_KEY=your-anthropic-api-key
4
4
 
5
5
  # Optional: Use AWS S3 Vectors instead of local storage
6
6
  # USE_S3_VECTORS=true
@@ -1,7 +1,7 @@
1
1
  # API Keys for AI-powered conversions
2
2
 
3
3
  # Anthropic API key (for Claude - recommended)
4
- ANTHROPIC_API_KEY=sk-ant-xxx...
4
+ ANTHROPIC_API_KEY=your-anthropic-api-key
5
5
 
6
6
  # OpenAI API key (for GPT-4o - alternative)
7
- OPENAI_API_KEY=sk-xxx...
7
+ OPENAI_API_KEY=your-openai-api-key
@@ -25,9 +25,9 @@ bun install
25
25
  For AI-powered conversions, set your API key:
26
26
 
27
27
  ```bash
28
- export ANTHROPIC_API_KEY=sk-ant-xxx...
28
+ export ANTHROPIC_API_KEY=your-anthropic-api-key
29
29
  # OR
30
- export OPENAI_API_KEY=sk-xxx...
30
+ export OPENAI_API_KEY=your-openai-api-key
31
31
  ```
32
32
 
33
33
  ## Usage
@@ -6,28 +6,28 @@
6
6
  bun run ../src/index.ts generate \
7
7
  --provider xai \
8
8
  --prompt "the concept of time as abstract art" \
9
- --output ./xai-time.png
9
+ --output ./aurora-time.png
10
10
 
11
11
  # Sci-fi scene
12
12
  bun run ../src/index.ts generate \
13
13
  --provider xai \
14
14
  --prompt "a robot sitting on a park bench reading a newspaper in a cyberpunk city" \
15
- --output ./xai-robot.png
15
+ --output ./aurora-robot.png
16
16
 
17
17
  # Fantasy landscape
18
18
  bun run ../src/index.ts generate \
19
19
  --provider xai \
20
20
  --prompt "a floating island with a castle and waterfalls, surrounded by clouds" \
21
- --output ./xai-floating-island.png
21
+ --output ./aurora-floating-island.png
22
22
 
23
23
  # Surreal art
24
24
  bun run ../src/index.ts generate \
25
25
  --provider xai \
26
26
  --prompt "a door opening into different seasons simultaneously" \
27
- --output ./xai-surreal-door.png
27
+ --output ./aurora-surreal-door.png
28
28
 
29
29
  # Character design
30
30
  bun run ../src/index.ts generate \
31
31
  --provider xai \
32
32
  --prompt "a friendly dragon character design, colorful scales, cartoon style" \
33
- --output ./xai-dragon.png
33
+ --output ./aurora-dragon.png
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: project-dashboard-reports
3
+ description: Use when creating, validating, serving, or documenting Hasna agent-managed project dashboards and JSON Render reports with the Projects CLI, provider panels, .hasna/project layout, or #iproj-* project channels.
4
+ ---
5
+
6
+ # Project Dashboard Reports
7
+
8
+ Use the Projects-owned dashboard surface for agent-managed project folders.
9
+ Do not build a one-off app or chat UI unless `open-projects` cannot express the
10
+ surface.
11
+
12
+ ## Canonical Layout
13
+
14
+ - Project folder: `Workspace/<division>/project/<project-slug>`
15
+ - Dashboard root: `.hasna/project/`
16
+ - Render manifest: `.hasna/project/dashboard/render.json`
17
+ - Latest snapshot: `.hasna/project/dashboard/snapshots/latest.snapshot.json`
18
+ - Conversation channel: CLI name `iproj-<project-slug>`, human display
19
+ `#iproj-<project-slug>`
20
+
21
+ Project folders may contain private documents. Dashboard JSON should use ids,
22
+ counts, statuses, resource refs, evidence refs, and redacted summaries rather
23
+ than raw emails, contract clauses, account numbers, identity documents, or
24
+ credentials.
25
+
26
+ ## Viewer Workflow
27
+
28
+ Use the explicit dashboard namespace:
29
+
30
+ ```bash
31
+ projects dashboard snapshot <project> --write --json
32
+ projects dashboard render <project> --json
33
+ projects dashboard validate <project> --json
34
+ PROJECTS_DASHBOARD_TOKEN=<token> projects dashboard serve <project> --host 0.0.0.0 --port <port>
35
+ ```
36
+
37
+ `snapshot`, `render`, and `validate` are read-only unless `--write` is passed.
38
+ For non-loopback serving, use `--token`, `PROJECTS_DASHBOARD_TOKEN`, or an
39
+ explicit `--trust-network` choice. Do not put dashboard access tokens in URLs,
40
+ tasks, reports, render specs, or chat messages.
41
+
42
+ ## Provider Panels
43
+
44
+ Provider CLIs should emit bounded `hasna.project_panel.v1` JSON:
45
+
46
+ ```bash
47
+ todos project-panel --project <project> --json --contract
48
+ files project-panel --project <project> --json --contract
49
+ mailery status project-panel --project <project> --limit 20 --json --contract
50
+ conversations project-panel --project <project> --limit 30 --json --contract
51
+ knowledge project-panel --project <project> --scope project --limit 30 --json --contract
52
+ mementos --json project-panel --project <project> --contract
53
+ reports project-panel --project <project> --json --contract
54
+ ```
55
+
56
+ Run provider commands from the project cwd when project-local stores matter.
57
+ Mailery remains workspace-scoped until explicit project-email mapping exists.
58
+ Providers should degrade to unavailable/error panels instead of dumping raw
59
+ content.
60
+
61
+ ## Agent Workflow
62
+
63
+ - Track work in `todos`; use messages only for coordination.
64
+ - Use durable Codewith goals or goal plans for long-running project work.
65
+ - Route new implementation and verification through fresh task-triggered agents,
66
+ not existing tmux panes.
67
+ - Record evidence as task ids, project ids, commit ids, local artifact paths, and
68
+ dashboard URLs.
69
+ - Update durable knowledge with stable architecture or policy decisions, but do
70
+ not store secrets or raw private document text as knowledge.
71
+
72
+ ## Done Criteria
73
+
74
+ - `projects dashboard validate <project> --json` passes.
75
+ - Dashboard render is a React Flow/JSON Render canvas from `open-projects`.
76
+ - Provider failures are visible as bounded error/unavailable panels.
77
+ - Sensitive content appears only as redacted summaries and ids.
78
+ - The task has validation evidence and the served dashboard URL when requested.
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "project-dashboard-reports",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "Project dashboard and JSON Render reporting guidance for agent-managed Hasna projects",
6
+ "type": "module",
7
+ "bin": {
8
+ "project-dashboard-reports": "./src/index.ts"
9
+ },
10
+ "scripts": {
11
+ "dev": "bun run src/index.ts",
12
+ "build": "bun build src/index.ts --outdir dist --target node",
13
+ "typecheck": "tsc --noEmit"
14
+ },
15
+ "dependencies": {},
16
+ "devDependencies": {
17
+ "@types/bun": "latest",
18
+ "typescript": "^5.7.0"
19
+ },
20
+ "files": [
21
+ "src",
22
+ "SKILL.md",
23
+ "tsconfig.json"
24
+ ]
25
+ }
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env bun
2
+
3
+ type GuideSection = {
4
+ title: string;
5
+ items: string[];
6
+ };
7
+
8
+ const sections: GuideSection[] = [
9
+ {
10
+ title: "layout",
11
+ items: [
12
+ "Keep dashboard assets under .hasna/project/.",
13
+ "Use .hasna/project/dashboard/render.json as the render manifest.",
14
+ "Write snapshots under .hasna/project/dashboard/snapshots/.",
15
+ "Use iproj-<project-slug> for the conversation channel name.",
16
+ ],
17
+ },
18
+ {
19
+ title: "commands",
20
+ items: [
21
+ "projects dashboard snapshot <project> --write --json",
22
+ "projects dashboard render <project> --json",
23
+ "projects dashboard validate <project> --json",
24
+ "PROJECTS_DASHBOARD_TOKEN=<token> projects dashboard serve <project> --host 0.0.0.0 --port <port>",
25
+ ],
26
+ },
27
+ {
28
+ title: "provider-panels",
29
+ items: [
30
+ "todos project-panel --project <project> --json --contract",
31
+ "files project-panel --project <project> --json --contract",
32
+ "mailery status project-panel --project <project> --json --contract",
33
+ "conversations project-panel --project <project> --json --contract",
34
+ "knowledge project-panel --project <project> --json --contract",
35
+ "mementos --json project-panel --project <project> --contract",
36
+ "reports project-panel --project <project> --json --contract",
37
+ ],
38
+ },
39
+ ];
40
+
41
+ function printHelp() {
42
+ console.log(`project-dashboard-reports
43
+
44
+ Prints the Hasna project dashboard reporting checklist.
45
+
46
+ Usage:
47
+ project-dashboard-reports [--json]
48
+
49
+ The full agent-facing guidance lives in SKILL.md.`);
50
+ }
51
+
52
+ function printText() {
53
+ for (const section of sections) {
54
+ console.log(`${section.title}:`);
55
+ for (const item of section.items) {
56
+ console.log(` - ${item}`);
57
+ }
58
+ }
59
+ }
60
+
61
+ if (Bun.argv.includes("--help") || Bun.argv.includes("-h")) {
62
+ printHelp();
63
+ } else if (Bun.argv.includes("--json")) {
64
+ console.log(JSON.stringify({ skill: "project-dashboard-reports", sections }, null, 2));
65
+ } else {
66
+ printText();
67
+ }