@hasna/skills 0.1.51 → 0.1.53

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.51",
36863
+ version: "0.1.53",
36864
36864
  description: "Skills library for AI coding agents",
36865
36865
  type: "module",
36866
36866
  bin: {
@@ -40146,6 +40146,13 @@ var init_project_management = __esm(() => {
40146
40146
  description: "Facilitate project retrospectives with structured reflection and action items",
40147
40147
  category: "Project Management",
40148
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"]
40149
40156
  }
40150
40157
  ];
40151
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.51",
21822
+ version: "0.1.53",
21823
21823
  description: "Skills library for AI coding agents",
21824
21824
  type: "module",
21825
21825
  bin: {
@@ -31143,6 +31143,13 @@ var PROJECT_MANAGEMENT_SKILLS = [
31143
31143
  description: "Facilitate project retrospectives with structured reflection and action items",
31144
31144
  category: "Project Management",
31145
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"]
31146
31153
  }
31147
31154
  ];
31148
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.51",
18843
+ version: "0.1.53",
18837
18844
  description: "Skills library for AI coding agents",
18838
18845
  type: "module",
18839
18846
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/skills",
3
- "version": "0.1.51",
3
+ "version": "0.1.53",
4
4
  "description": "Skills library for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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> --limit 20 --json --contract",
33
+ "conversations project-panel --project <project> --limit 30 --json --contract",
34
+ "knowledge project-panel --project <project> --scope project --limit 30 --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
+ }