@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 +11 -2
- package/bin/mcp.js +11 -2
- package/dist/index.js +11 -2
- package/package.json +4 -2
- package/skills/apidocs/.env.example +2 -2
- package/skills/convert/.env.example +2 -2
- package/skills/convert/README.md +2 -2
- package/skills/image/examples/{xai-examples.sh → aurora-examples.sh} +5 -5
- package/skills/project-dashboard-reports/SKILL.md +78 -0
- package/skills/project-dashboard-reports/package.json +25 -0
- package/skills/project-dashboard-reports/src/index.ts +67 -0
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
"
|
|
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=
|
|
3
|
-
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=
|
|
4
|
+
ANTHROPIC_API_KEY=your-anthropic-api-key
|
|
5
5
|
|
|
6
6
|
# OpenAI API key (for GPT-4o - alternative)
|
|
7
|
-
OPENAI_API_KEY=
|
|
7
|
+
OPENAI_API_KEY=your-openai-api-key
|
package/skills/convert/README.md
CHANGED
|
@@ -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=
|
|
28
|
+
export ANTHROPIC_API_KEY=your-anthropic-api-key
|
|
29
29
|
# OR
|
|
30
|
-
export OPENAI_API_KEY=
|
|
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 ./
|
|
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 ./
|
|
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 ./
|
|
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 ./
|
|
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 ./
|
|
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
|
+
}
|