claudecode-omc 5.3.0 → 5.4.0

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,5 +1,5 @@
1
1
  {
2
- "bundledAt": "2026-04-01T09:19:14Z",
2
+ "bundledAt": "2026-04-01T09:46:53Z",
3
3
  "sources": {
4
4
  "anthropic-skills": { "artifacts": 2 },
5
5
  "oh-my-claudecode": { "artifacts": 20 },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudecode-omc",
3
- "version": "5.3.0",
3
+ "version": "5.4.0",
4
4
  "description": "Claude Code harness — best-practice skills, agents, hooks, and configs from multiple sources",
5
5
  "bin": {
6
6
  "omc-manage": "bin/omc-manage.js"
@@ -70,9 +70,15 @@ async function artifact(args, flags = {}) {
70
70
 
71
71
  const conflicts = detectConflicts(sources);
72
72
  const resolutions = resolveConflicts(conflicts, mergeConfig);
73
- const merged = applyResolutions(sources, resolutions);
73
+ let merged = applyResolutions(sources, resolutions);
74
74
 
75
- console.log(`${ARTIFACT_TYPES[artifactType].label} (${merged.length} total, from ${sources.length} sources):`);
75
+ // Apply exclude list
76
+ const excludeList = (mergeConfig.exclude && mergeConfig.exclude[artifactType]) || [];
77
+ const excludeSet = new Set(excludeList);
78
+ const excluded = merged.filter(item => excludeSet.has(item.name));
79
+ merged = merged.filter(item => !excludeSet.has(item.name));
80
+
81
+ console.log(`${ARTIFACT_TYPES[artifactType].label} (${merged.length} installable, ${excluded.length} excluded, from ${sources.length} sources):`);
76
82
  console.log('');
77
83
 
78
84
  const bySource = {};
@@ -91,6 +97,14 @@ async function artifact(args, flags = {}) {
91
97
  }
92
98
  console.log('');
93
99
  }
100
+
101
+ if (excluded.length > 0) {
102
+ console.log(`[excluded] (${excluded.length})`);
103
+ for (const item of excluded.sort((a, b) => a.name.localeCompare(b.name))) {
104
+ console.log(` ${item.name} (${item.sourceName})`);
105
+ }
106
+ console.log('');
107
+ }
94
108
  break;
95
109
  }
96
110
 
package/src/cli/setup.js CHANGED
@@ -65,7 +65,19 @@ async function installNameBasedArtifacts(artifactType, sources, mergeConfig, ins
65
65
 
66
66
  const conflicts = detectConflicts(loaded);
67
67
  const resolutions = resolveConflicts(conflicts, mergeConfig);
68
- const merged = applyResolutions(loaded, resolutions);
68
+ let merged = applyResolutions(loaded, resolutions);
69
+
70
+ // Apply exclude list
71
+ const excludeList = (mergeConfig.exclude && mergeConfig.exclude[artifactType]) || [];
72
+ if (excludeList.length > 0) {
73
+ const excludeSet = new Set(excludeList);
74
+ const before = merged.length;
75
+ merged = merged.filter(item => !excludeSet.has(item.name));
76
+ const excluded = before - merged.length;
77
+ if (excluded > 0) {
78
+ console.log(` excluded ${excluded} items: ${excludeList.filter(n => merged.every(m => m.name !== n)).join(', ')}`);
79
+ }
80
+ }
69
81
 
70
82
  if (flags.dryRun) {
71
83
  for (const item of merged.sort((a, b) => a.name.localeCompare(b.name))) {
@@ -7,5 +7,16 @@
7
7
  { "name": "oh-my-claudecode", "priority": 2 },
8
8
  { "name": "superpowers", "priority": 3 }
9
9
  ],
10
- "preferences": {}
10
+ "preferences": {},
11
+ "exclude": {
12
+ "skills": [
13
+ "ask",
14
+ "ccg",
15
+ "multi-model-research",
16
+ "test-gen",
17
+ "release",
18
+ "omc-teams",
19
+ "using-superpowers"
20
+ ]
21
+ }
11
22
  }