@fro.bot/systematic 1.10.0 → 1.11.1

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
@@ -10,6 +10,7 @@
10
10
 
11
11
  [![Build Status](https://img.shields.io/github/actions/workflow/status/marcusrbrown/systematic/main.yaml?style=flat-square&label=build&labelColor=1a1a2e&color=4FD1C5)](https://github.com/marcusrbrown/systematic/actions)
12
12
  [![npm version](https://img.shields.io/npm/v/@fro.bot/systematic?style=flat-square&label=npm&labelColor=1a1a2e&color=E91E8C)](https://www.npmjs.com/package/@fro.bot/systematic)
13
+ [![Docs](https://img.shields.io/badge/docs-fro.bot/systematic-4FD1C5?style=flat-square&labelColor=1a1a2e)](https://fro.bot/systematic)
13
14
  [![License](https://img.shields.io/badge/license-MIT-F5A623?style=flat-square&labelColor=1a1a2e)](LICENSE)
14
15
 
15
16
  <br>
@@ -324,7 +325,7 @@ See [`AGENTS.md`](./AGENTS.md) for detailed development guidelines, code style c
324
325
 
325
326
  ## Converting from Claude Code
326
327
 
327
- Migrating skills, agents, or commands from Claude Code (CEP) to Systematic? See the [Conversion Guide](./docs/CONVERSION-GUIDE.md) for field mappings and examples.
328
+ Migrating skills, agents, or commands from Claude Code (CEP) to Systematic? See the [Conversion Guide](https://fro.bot/systematic/guides/conversion-guide) for field mappings and examples. (Also available as [local Markdown](./docs/CONVERSION-GUIDE.md).)
328
329
 
329
330
  ## References
330
331
 
package/dist/index.js CHANGED
@@ -70,7 +70,7 @@ ${toolMapping}
70
70
  // src/lib/skill-loader.ts
71
71
  import path2 from "path";
72
72
  var SKILL_PREFIX = "systematic:";
73
- var SKILL_DESCRIPTION_PREFIX = "(systematic - Skill) ";
73
+ var SKILL_DESCRIPTION_PREFIX = "(Systematic - Skill) ";
74
74
  function formatSkillCommandName(name) {
75
75
  if (name.startsWith(SKILL_PREFIX)) {
76
76
  return name;
@@ -128,6 +128,17 @@ function loadSkill(skillInfo) {
128
128
  }
129
129
 
130
130
  // src/lib/config-handler.ts
131
+ function toTitleCase(name) {
132
+ return name.split("-").map((segment) => segment.length > 0 ? segment.charAt(0).toUpperCase() + segment.slice(1) : segment).join("-");
133
+ }
134
+ function formatAgentDescription(name, description) {
135
+ const baseDescription = description || `${name} agent`;
136
+ const suffix = `(${toTitleCase(name)} - Systematic)`;
137
+ if (baseDescription.endsWith(suffix)) {
138
+ return baseDescription;
139
+ }
140
+ return `${baseDescription} ${suffix}`;
141
+ }
131
142
  function loadAgentAsConfig(agentInfo) {
132
143
  try {
133
144
  const converted = convertFileWithCache(agentInfo.file, "agent", {
@@ -148,7 +159,7 @@ function loadAgentAsConfig(agentInfo) {
148
159
  permission
149
160
  } = extractAgentFrontmatter(converted);
150
161
  const config = {
151
- description: description || `${agentInfo.name} agent`,
162
+ description: formatAgentDescription(agentInfo.name, description),
152
163
  prompt
153
164
  };
154
165
  if (model !== undefined)
@@ -185,7 +196,7 @@ function loadCommandAsConfig(commandInfo) {
185
196
  const baseDescription = description || `${name || cleanName} command`;
186
197
  const config = {
187
198
  template: body.trim(),
188
- description: `(systematic) ${baseDescription}`
199
+ description: `(Systematic) ${baseDescription}`
189
200
  };
190
201
  if (agent !== undefined)
191
202
  config.agent = agent;
@@ -5,6 +5,8 @@ export interface ConfigHandlerDeps {
5
5
  bundledAgentsDir: string;
6
6
  bundledCommandsDir: string;
7
7
  }
8
+ export declare function toTitleCase(name: string): string;
9
+ export declare function formatAgentDescription(name: string, description: string | undefined): string;
8
10
  /**
9
11
  * Create the config hook handler for the Systematic plugin.
10
12
  *
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "1.10.0",
3
+ "version": "1.11.1",
4
4
  "description": "Structured engineering workflows for OpenCode",
5
5
  "type": "module",
6
+ "homepage": "https://fro.bot/systematic",
6
7
  "main": "./dist/index.js",
7
8
  "bin": {
8
9
  "systematic": "./dist/cli.js"
@@ -19,6 +20,9 @@
19
20
  "agents",
20
21
  "commands"
21
22
  ],
23
+ "workspaces": [
24
+ "docs"
25
+ ],
22
26
  "scripts": {
23
27
  "clean": "rimraf dist",
24
28
  "build": "bun run clean && bun build src/index.ts src/cli.ts --outdir dist --target bun --splitting --packages external && tsc --emitDeclarationOnly",
@@ -29,6 +33,10 @@
29
33
  "typecheck": "tsc --noEmit",
30
34
  "lint": "biome check .",
31
35
  "fix": "bun run lint --fix",
36
+ "docs:dev": "bun run --cwd docs dev",
37
+ "docs:build": "bun run docs:generate && bun run --cwd docs build",
38
+ "docs:preview": "bun run --cwd docs preview",
39
+ "docs:generate": "bun docs/scripts/transform-content.ts",
32
40
  "prepublishOnly": "bun run build"
33
41
  },
34
42
  "keywords": [
@@ -53,6 +61,7 @@
53
61
  "devDependencies": {
54
62
  "@biomejs/biome": "^2.0.0",
55
63
  "@opencode-ai/plugin": "^1.1.30",
64
+ "@opencode-ai/sdk": "^1.1.30",
56
65
  "@types/bun": "latest",
57
66
  "@types/js-yaml": "^4.0.9",
58
67
  "@types/node": "^24.0.0",