@contextium/cli 1.0.3 → 1.0.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"new-file.d.ts","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,cAAc,SAoFvB,CAAA"}
1
+ {"version":3,"file":"new-file.d.ts","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,cAAc,SA+FvB,CAAA"}
@@ -8,8 +8,9 @@ export const newFileCommand = new Command('new')
8
8
  .argument('<library>', 'Context library/project name or slug')
9
9
  .requiredOption('-t, --title <title>', 'File title')
10
10
  .requiredOption('-p, --path <path>', 'File path (e.g. "guide.md")')
11
- .option('-c, --content <text>', 'File content')
11
+ .option('-c, --content <text>', 'File content (avoid for long or multi-line content — use --stdin or -f instead)')
12
12
  .option('-f, --from-file <filepath>', 'Read content from a local file')
13
+ .option('--stdin', 'Read content from stdin (pipe content in)')
13
14
  .option('-w, --workspace <slug>', 'Workspace name or slug')
14
15
  .option('--folder <id>', 'Folder ID to place file in')
15
16
  .action(async (libraryName, options) => {
@@ -43,13 +44,23 @@ export const newFileCommand = new Command('new')
43
44
  spinner.fail(`Context library '${libraryName}' not found`);
44
45
  process.exit(1);
45
46
  }
46
- // Read content from file if specified
47
+ // Read content stdin takes priority, then -f, then -c
47
48
  let content = options.content || '';
48
49
  if (options.fromFile) {
49
50
  content = await fs.readFile(options.fromFile, 'utf-8');
50
51
  }
51
- if (!content) {
52
- spinner.fail('File content is required. Use -c <text> to provide content or -f <filepath> to read from a local file.');
52
+ if (options.stdin) {
53
+ spinner.stop();
54
+ content = await new Promise((resolve, reject) => {
55
+ const chunks = [];
56
+ process.stdin.on('data', (chunk) => chunks.push(chunk));
57
+ process.stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
58
+ process.stdin.on('error', reject);
59
+ });
60
+ spinner.start();
61
+ }
62
+ if (!content || content.trim() === '') {
63
+ spinner.fail('File content is required. Use --stdin (pipe content in), -f <filepath>, or -c <text>.');
53
64
  process.exit(1);
54
65
  }
55
66
  const data = {
@@ -1 +1 @@
1
- {"version":3,"file":"new-file.js","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-file.js","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contextium/cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Command-line tool for managing Contextium documentation, agents, skills, and workflows — pipe context to AI coding assistants",
5
5
  "keywords": [
6
6
  "contextium",
@@ -3,71 +3,100 @@ name: ium:marketplace
3
3
  description: Browse, install, or publish skills, agents, and MCP servers on the Contextium Marketplace
4
4
  allowed-tools:
5
5
  - Bash
6
+ - mcp__contextium__search_marketplace
7
+ - mcp__contextium__get_marketplace_listing
8
+ - mcp__contextium__install_marketplace_listing
9
+ - mcp__contextium__list_agents
10
+ - mcp__contextium__list_skills
6
11
  - AskUserQuestion
7
12
  ---
8
13
 
9
14
  <objective>
10
- Interact with the Contextium Marketplace — browse what's available, install tools into your workspace, or publish your own skills, agents, and MCP servers.
15
+ Help the user find and install the right tools from the Contextium Marketplace using natural language. Do not dump category lists understand what they're trying to do and surface the best 5 matches across all types (skills, agents, MCP servers).
11
16
  </objective>
12
17
 
13
18
  <process>
14
19
 
15
20
  <step name="choose_action">
16
- Ask the user what they want to do using AskUserQuestion:
17
- - Question: "What would you like to do on the Marketplace?"
21
+ Ask: "What would you like to do on the Marketplace?"
18
22
  - Options:
19
- - "Browse & install — find skills, agents, or MCP servers to add to my workspace"
20
- - "Publish — share a skill, agent, or MCP server with the community"
21
- - "My installs — see what's installed in my workspace"
23
+ - "Find & install — I'll describe what I need"
24
+ - "Publish — share a skill, agent, or MCP server"
25
+ - "My installs — see what's in my workspace"
22
26
  </step>
23
27
 
24
- <step name="browse_and_install">
25
- If Browse & install selected:
28
+ <step name="find_and_install">
29
+ If Find & install selected:
26
30
 
27
- Ask: "What type of tool are you looking for?"
28
- - Options: "Skill", "Agent", "MCP Server", "Any"
31
+ Ask: "What are you looking for? Describe what you want to do or what problem you want to solve."
29
32
 
30
- Ask: "Any keywords to search for? (or press enter to browse all)"
33
+ Wait for a natural language response. Examples: "I want to plan and research my project", "I need something to help with writing", "I want to analyse customer feedback".
31
34
 
32
- Run the search:
33
- ```bash
34
- contextium marketplace list -t <skill|agent|mcp_server> -q "<query>"
35
- ```
35
+ From their description, infer intent and search intelligently:
36
+
37
+ 1. Silently fetch what the user already has in their workspace:
38
+ - **CLI:** `contextium skills list -w <workspace> 2>/dev/null` and `contextium agents list -w <workspace> 2>/dev/null`
39
+ - **MCP:** call list_skills and list_agents
40
+
41
+ 2. Search the marketplace across all types using the user's keywords:
42
+ - **CLI:** `contextium marketplace list -q "<extracted keywords>" 2>/dev/null`
43
+ - **MCP:** call mcp__contextium__search_marketplace with the extracted keywords
44
+
45
+ 3. Decide which type(s) to prioritise based on what the user described:
46
+ - If they want to extend Claude's capabilities (web access, file parsing, external APIs) → prioritise MCP servers
47
+ - If they want a specialist assistant persona → prioritise agents
48
+ - If they want reusable knowledge or instructions → prioritise skills
49
+ - If something relevant already exists in their workspace → flag it as "you already have this" and skip suggesting it
36
50
 
37
- Omit `-t` if "Any" was selected. Omit `-q` if no keywords given.
51
+ 4. From all results, pick the top 5 that best match the intent. If fewer than 5 good matches exist, only show what's relevant — do not pad with irrelevant results.
52
+
53
+ Present results like this:
38
54
 
39
- To see full details of a specific listing:
40
- ```bash
41
- contextium marketplace show <slug>
42
55
  ```
56
+ Here are the best matches for what you described:
57
+
58
+ 1. **Name** (type: skill / agent / mcp)
59
+ What it does and why it fits what you described.
60
+
61
+ 2. **Name** (type: ...)
62
+ ...
43
63
 
44
- Once the user picks a listing, install it:
45
- ```bash
46
- contextium marketplace install <slug> -w <workspace>
64
+ Already in your workspace: "Name" this already covers part of what you need.
47
65
  ```
48
66
 
49
- Confirm installed and tell the user where to find it (Skills page, Agents page, etc.).
67
+ Ask: "Which would you like to install? Give me a number, or say skip."
68
+
69
+ If the user picks one, fetch full details and install:
70
+ - **CLI:** `contextium marketplace show <slug>` then `contextium marketplace install <slug> -w <workspace>`
71
+ - **MCP:** call get_marketplace_listing then install_marketplace_listing
72
+
73
+ Confirm: `✓ Installed "<Name>" into your workspace.`
74
+
75
+ Ask if they want to install another from the list or search for something different.
50
76
  </step>
51
77
 
52
78
  <step name="publish">
53
79
  If Publish selected:
54
80
 
55
- The CLI does not support publishing — direct the user to the web marketplace.
56
-
57
81
  "Publishing is done via the web UI. Go to https://contextium.io/marketplace and click 'Publish' to share your skill, agent, or MCP server."
58
82
  </step>
59
83
 
60
84
  <step name="my_installs">
61
85
  If My installs selected:
62
86
 
63
- The CLI does not have a list-installed command. List the workspace's skills and agents instead:
87
+ Silently fetch the workspace's skills and agents:
88
+ - **CLI:** `contextium skills list -w <workspace> 2>/dev/null` and `contextium agents list -w <workspace> 2>/dev/null`
89
+ - **MCP:** call list_skills and list_agents
64
90
 
65
- ```bash
66
- contextium skills list -w <workspace>
67
- contextium agents list -w <workspace>
68
- ```
69
-
70
- Show what's available and offer to install more from the marketplace.
91
+ Show a clean list grouped by type. Offer to search for more.
71
92
  </step>
72
93
 
73
94
  </process>
95
+
96
+ <rules>
97
+ - Never ask the user to pick a type (skill / agent / MCP) — infer it from what they describe
98
+ - Never show all marketplace items — always filter to top 5 relevant results
99
+ - Always check what the user already has before suggesting installs
100
+ - Do not show raw CLI output, IDs, or slugs to the user
101
+ - If search returns nothing useful, say so and ask them to rephrase
102
+ </rules>
@@ -170,6 +170,15 @@ contextium tag-type create "<name>" --workspace <slug>
170
170
  **MCP:** use the corresponding create_* tools for each resource type.
171
171
  </step>
172
172
 
173
+ <step name="load_workflow">
174
+ After all resources are created, automatically load the workflow without asking the user. Run silently:
175
+
176
+ **CLI:** `contextium workflow load "<workflow-name>" --workspace <slug> 2>/dev/null`
177
+ **MCP:** call mcp__contextium__load_workflow with the workflow name and workspace.
178
+
179
+ Do not tell the user to load it themselves — just load it as part of setup.
180
+ </step>
181
+
173
182
  <step name="summary">
174
183
  Show a clean final summary:
175
184
 
@@ -181,9 +190,7 @@ Libraries: <list — new + reused>
181
190
  Agents: <list — new + reused, or none>
182
191
  Skills: <list — new + reused, or none>
183
192
  Tags: <list, or none>
184
- Workflow: <name>
185
-
186
- Load it anytime with /ium:workflow.
193
+ Workflow: <name> — loaded and ready
187
194
  ```
188
195
 
189
196
  If anything failed to create, add a single line at the end:
package/skills/ium/new.md CHANGED
@@ -6,24 +6,26 @@ allowed-tools:
6
6
  ---
7
7
 
8
8
  <objective>
9
- Create a new file in a Contextium context library. Always include the full content of the file — never create empty files.
9
+ Create a new file in a Contextium context library. Always pipe content via stdin using a single-quoted heredoc — never use -c to inline content as special characters will be mangled by the shell.
10
10
  </objective>
11
11
 
12
12
  <process>
13
- Use the contextium new command with the required flags. Always provide -c with the full file content.
14
-
13
+ If the user has not specified a library, list available libraries first:
15
14
  ```bash
16
- contextium new <library-name> -t "<title>" -p "<path.md>" -c "<full content here>" -w <workspace>
15
+ contextium libraries -w <workspace>
17
16
  ```
18
17
 
19
- If the user has not specified a library, list available libraries first:
18
+ Then create the file by piping content through stdin using a single-quoted heredoc (the `'EOF'` quotes prevent all shell interpolation):
19
+
20
20
  ```bash
21
- contextium libraries -w <workspace>
21
+ cat << 'EOF' | contextium new <library-name> -t "<title>" -p "<path.md>" --stdin -w <workspace>
22
+ <full file content here>
23
+ EOF
22
24
  ```
23
25
 
24
26
  Rules:
25
- - ALWAYS include -c with the complete file content — never omit it or leave it empty
26
- - The content should be fully written, not a placeholder
27
- - Use -f <filepath> if the content already exists as a local file
27
+ - ALWAYS use the heredoc+stdin pattern — never use -c to pass content inline
28
+ - The single quotes around EOF (`<< 'EOF'`) are mandatory — they prevent shell interpolation of $variables, backticks, and special characters
29
+ - Write the complete, fully-formed content inside the heredoc not a placeholder
28
30
  - If no workspace is set in .contextiumrc, ask the user which workspace to use
29
31
  </process>