oh-my-customcode 0.4.0 → 0.5.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.
package/dist/cli/index.js CHANGED
@@ -12314,24 +12314,6 @@ async function checkHooks(targetDir) {
12314
12314
  fixable: false
12315
12315
  };
12316
12316
  }
12317
- async function checkPipelines(targetDir) {
12318
- const pipelinesDir = path.join(targetDir, "pipelines");
12319
- const exists2 = await isDirectory(pipelinesDir);
12320
- if (!exists2) {
12321
- return {
12322
- name: "Pipelines",
12323
- status: "fail",
12324
- message: "pipelines/ directory not found",
12325
- fixable: true
12326
- };
12327
- }
12328
- return {
12329
- name: "Pipelines",
12330
- status: "pass",
12331
- message: "Pipelines OK",
12332
- fixable: false
12333
- };
12334
- }
12335
12317
  async function checkContexts(targetDir) {
12336
12318
  const contextsDir = path.join(targetDir, ".claude", "contexts");
12337
12319
  const exists2 = await isDirectory(contextsDir);
@@ -12384,7 +12366,6 @@ async function fixSingleIssue(check, targetDir) {
12384
12366
  Skills: () => createMissingDirectory(path.join(targetDir, ".claude", "skills")),
12385
12367
  Guides: () => createMissingDirectory(path.join(targetDir, "guides")),
12386
12368
  Hooks: () => createMissingDirectory(path.join(targetDir, ".claude", "hooks")),
12387
- Pipelines: () => createMissingDirectory(path.join(targetDir, "pipelines")),
12388
12369
  Contexts: () => createMissingDirectory(path.join(targetDir, ".claude", "contexts")),
12389
12370
  Symlinks: async () => {
12390
12371
  if (!check.details || check.details.length === 0)
@@ -12441,7 +12422,6 @@ async function doctorCommand(options = {}) {
12441
12422
  checkIndexFiles(targetDir),
12442
12423
  checkGuides(targetDir),
12443
12424
  checkHooks(targetDir),
12444
- checkPipelines(targetDir),
12445
12425
  checkContexts(targetDir)
12446
12426
  ]);
12447
12427
  if (options.fix) {
@@ -12907,25 +12887,12 @@ function migrateConfig(config) {
12907
12887
  }
12908
12888
 
12909
12889
  // src/core/installer.ts
12910
- var DIRECTORY_STRUCTURE = [
12911
- ".claude",
12912
- ".claude/rules",
12913
- ".claude/hooks",
12914
- ".claude/contexts",
12915
- ".claude/agents",
12916
- ".claude/skills",
12917
- "guides",
12918
- "pipelines",
12919
- "pipelines/templates",
12920
- "pipelines/examples"
12921
- ];
12922
12890
  var COMPONENT_PATHS = {
12923
12891
  "claude-md": "",
12924
12892
  rules: ".claude/rules",
12925
12893
  agents: ".claude/agents",
12926
12894
  skills: ".claude/skills",
12927
12895
  guides: "guides",
12928
- pipelines: "pipelines",
12929
12896
  hooks: ".claude/hooks",
12930
12897
  contexts: ".claude/contexts"
12931
12898
  };
@@ -13017,8 +12984,6 @@ async function install(options) {
13017
12984
  await handleBackup(options.targetDir, !!options.backup, result);
13018
12985
  await checkAndWarnExisting(options.targetDir, !!options.force, !!options.backup, result);
13019
12986
  await verifyTemplateDirectory();
13020
- await createDirectoryStructure(options.targetDir);
13021
- debug("install.directories_created");
13022
12987
  await installAllComponents(options.targetDir, options, result);
13023
12988
  await installClaudeMdWithTracking(options.targetDir, options, result);
13024
12989
  await updateInstallConfig(options.targetDir, options, result.installedComponents);
@@ -13031,14 +12996,8 @@ async function install(options) {
13031
12996
  }
13032
12997
  return result;
13033
12998
  }
13034
- async function createDirectoryStructure(targetDir) {
13035
- for (const dir2 of DIRECTORY_STRUCTURE) {
13036
- const fullPath = join3(targetDir, dir2);
13037
- await ensureDirectory(fullPath);
13038
- }
13039
- }
13040
12999
  function getAllComponents() {
13041
- return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
13000
+ return ["rules", "agents", "skills", "guides", "hooks", "contexts"];
13042
13001
  }
13043
13002
  async function installComponent(targetDir, component, options) {
13044
13003
  const templatePath = COMPONENT_PATHS[component];
@@ -13088,7 +13047,7 @@ async function backupExisting(sourcePath, backupDir) {
13088
13047
  return backupPath;
13089
13048
  }
13090
13049
  async function checkExistingPaths(targetDir) {
13091
- const pathsToCheck = ["CLAUDE.md", ".claude", "guides", "pipelines"];
13050
+ const pathsToCheck = ["CLAUDE.md", ".claude", "guides"];
13092
13051
  const existingPaths = [];
13093
13052
  for (const relativePath of pathsToCheck) {
13094
13053
  const fullPath = join3(targetDir, relativePath);
@@ -13126,7 +13085,7 @@ async function checkExistingInstallation(targetDir) {
13126
13085
  const claudeDir = join4(targetDir, ".claude");
13127
13086
  return fileExists(claudeDir);
13128
13087
  }
13129
- var CLAUDE_SUBDIR_COMPONENTS = new Set(["rules", "hooks", "contexts"]);
13088
+ var CLAUDE_SUBDIR_COMPONENTS = new Set(["rules", "hooks", "contexts", "agents", "skills"]);
13130
13089
  function componentToPath(targetDir, component) {
13131
13090
  if (component === "claude-md") {
13132
13091
  return join4(targetDir, "CLAUDE.md");
@@ -13541,30 +13500,13 @@ async function getContexts(targetDir) {
13541
13500
  return [];
13542
13501
  }
13543
13502
  }
13544
- async function getPipelines(targetDir) {
13545
- const pipelinesDir = join5(targetDir, "pipelines");
13546
- if (!await fileExists(pipelinesDir))
13547
- return [];
13548
- try {
13549
- const pipelineFiles = await listFiles(pipelinesDir, { recursive: true, pattern: "*.yaml" });
13550
- return pipelineFiles.map((pipePath) => ({
13551
- name: basename2(pipePath, ".yaml"),
13552
- type: "pipeline",
13553
- category: relative(join5(targetDir, "pipelines"), dirname2(pipePath)) || "root",
13554
- path: relative(targetDir, pipePath)
13555
- })).sort((a, b) => a.name.localeCompare(b.name));
13556
- } catch {
13557
- return [];
13558
- }
13559
- }
13560
13503
  var COMPONENT_GETTERS = {
13561
13504
  agents: getAgents,
13562
13505
  skills: getSkills,
13563
13506
  guides: getGuides,
13564
13507
  rules: getRules,
13565
13508
  hooks: getHooks,
13566
- contexts: getContexts,
13567
- pipelines: getPipelines
13509
+ contexts: getContexts
13568
13510
  };
13569
13511
  function displayComponents(components, type, format) {
13570
13512
  if (format === "json") {
@@ -13576,14 +13518,13 @@ function displayComponents(components, type, format) {
13576
13518
  }
13577
13519
  }
13578
13520
  async function handleListAll(targetDir, format) {
13579
- const [agents, skills, guides, rules, hooks, contexts, pipelines] = await Promise.all([
13521
+ const [agents, skills, guides, rules, hooks, contexts] = await Promise.all([
13580
13522
  getAgents(targetDir),
13581
13523
  getSkills(targetDir),
13582
13524
  getGuides(targetDir),
13583
13525
  getRules(targetDir),
13584
13526
  getHooks(targetDir),
13585
- getContexts(targetDir),
13586
- getPipelines(targetDir)
13527
+ getContexts(targetDir)
13587
13528
  ]);
13588
13529
  if (format !== "json") {
13589
13530
  displayComponents(agents, "agents", format);
@@ -13592,9 +13533,8 @@ async function handleListAll(targetDir, format) {
13592
13533
  displayComponents(rules, "rules", format);
13593
13534
  displayComponents(hooks, "hooks", format);
13594
13535
  displayComponents(contexts, "contexts", format);
13595
- displayComponents(pipelines, "pipelines", format);
13596
13536
  }
13597
- return [...agents, ...skills, ...guides, ...rules, ...hooks, ...contexts, ...pipelines];
13537
+ return [...agents, ...skills, ...guides, ...rules, ...hooks, ...contexts];
13598
13538
  }
13599
13539
  async function listCommand(type = "all", options = {}) {
13600
13540
  const targetDir = process.cwd();
package/dist/index.js CHANGED
@@ -1,4 +1,20 @@
1
1
  import { createRequire } from "node:module";
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
2
18
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
19
 
4
20
  // src/core/config.ts
@@ -408,10 +424,7 @@ var DIRECTORY_STRUCTURE = [
408
424
  ".claude/contexts",
409
425
  ".claude/agents",
410
426
  ".claude/skills",
411
- "guides",
412
- "pipelines",
413
- "pipelines/templates",
414
- "pipelines/examples"
427
+ "guides"
415
428
  ];
416
429
  var COMPONENT_PATHS = {
417
430
  "claude-md": "",
@@ -419,7 +432,6 @@ var COMPONENT_PATHS = {
419
432
  agents: ".claude/agents",
420
433
  skills: ".claude/skills",
421
434
  guides: "guides",
422
- pipelines: "pipelines",
423
435
  hooks: ".claude/hooks",
424
436
  contexts: ".claude/contexts"
425
437
  };
@@ -511,8 +523,6 @@ async function install(options) {
511
523
  await handleBackup(options.targetDir, !!options.backup, result);
512
524
  await checkAndWarnExisting(options.targetDir, !!options.force, !!options.backup, result);
513
525
  await verifyTemplateDirectory();
514
- await createDirectoryStructure(options.targetDir);
515
- debug("install.directories_created");
516
526
  await installAllComponents(options.targetDir, options, result);
517
527
  await installClaudeMdWithTracking(options.targetDir, options, result);
518
528
  await updateInstallConfig(options.targetDir, options, result.installedComponents);
@@ -559,7 +569,7 @@ async function getTemplateManifest() {
559
569
  };
560
570
  }
561
571
  function getAllComponents() {
562
- return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
572
+ return ["rules", "agents", "skills", "guides", "hooks", "contexts"];
563
573
  }
564
574
  async function installComponent(targetDir, component, options) {
565
575
  const templatePath = COMPONENT_PATHS[component];
@@ -609,7 +619,7 @@ async function backupExisting(sourcePath, backupDir) {
609
619
  return backupPath;
610
620
  }
611
621
  async function checkExistingPaths(targetDir) {
612
- const pathsToCheck = ["CLAUDE.md", ".claude", "guides", "pipelines"];
622
+ const pathsToCheck = ["CLAUDE.md", ".claude", "guides"];
613
623
  const existingPaths = [];
614
624
  for (const relativePath of pathsToCheck) {
615
625
  const fullPath = join3(targetDir, relativePath);
@@ -764,7 +774,7 @@ async function preserveCustomizations(targetDir, customizations) {
764
774
  return preserved;
765
775
  }
766
776
  function getAllUpdateComponents() {
767
- return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
777
+ return ["rules", "agents", "skills", "guides", "hooks", "contexts"];
768
778
  }
769
779
  async function getLatestVersion() {
770
780
  const manifestPath = resolveTemplatePath("manifest.json");
@@ -812,7 +822,6 @@ function getComponentPath(component) {
812
822
  agents: ".claude/agents",
813
823
  skills: ".claude/skills",
814
824
  guides: "guides",
815
- pipelines: "pipelines",
816
825
  hooks: ".claude/hooks",
817
826
  contexts: ".claude/contexts"
818
827
  };
@@ -823,7 +832,7 @@ async function backupInstallation(targetDir) {
823
832
  const backupDir = join4(targetDir, `.omcustom-backup-${timestamp}`);
824
833
  const fs = await import("node:fs/promises");
825
834
  await ensureDirectory(backupDir);
826
- const dirsToBackup = [".claude", "guides", "pipelines"];
835
+ const dirsToBackup = [".claude", "guides"];
827
836
  for (const dir of dirsToBackup) {
828
837
  const srcPath = join4(targetDir, dir);
829
838
  if (await fileExists(srcPath)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-customcode",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Batteries-included agent harness for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,66 +0,0 @@
1
- # Code Review Pipeline
2
- # Full code review workflow with language detection
3
-
4
- name: code-review
5
- description: Full code review workflow with automatic language detection
6
-
7
- inputs:
8
- - name: file_path
9
- required: true
10
- description: Path to the file to review
11
-
12
- - name: focus
13
- required: false
14
- description: Focus area (style, security, performance, all)
15
- default: all
16
-
17
- steps:
18
- # Step 1: Detect programming language
19
- - id: detect_language
20
- agent: secretary
21
- action: detect_language
22
- input:
23
- file: "${file_path}"
24
- output: language
25
- description: Detect the programming language of the file
26
-
27
- # Step 2: Code analysis by language expert
28
- - id: analyze
29
- agent: "${language}-expert"
30
- action: analyze_code
31
- input:
32
- file: "${file_path}"
33
- focus: "${focus}"
34
- output: analysis
35
- description: Analyze code using language-specific best practices
36
-
37
- # Step 3: Security review
38
- - id: security_check
39
- agent: qa-lead
40
- action: security_review
41
- input:
42
- file: "${file_path}"
43
- findings: "${analysis}"
44
- output: security
45
- description: Check for security vulnerabilities
46
- on_error: continue
47
-
48
- # Step 4: Generate final report
49
- - id: report
50
- agent: documenter
51
- action: generate_report
52
- input:
53
- file: "${file_path}"
54
- language: "${language}"
55
- analysis: "${analysis}"
56
- security: "${security}"
57
- output: report
58
- description: Generate comprehensive review report
59
-
60
- error_handling:
61
- default: stop
62
-
63
- metadata:
64
- author: oh-my-customcode
65
- version: 1.0.0
66
- tags: [code-review, quality, security]
@@ -1,66 +0,0 @@
1
- # Code Review Pipeline
2
- # Full code review workflow with language detection
3
-
4
- name: code-review
5
- description: Full code review workflow with automatic language detection
6
-
7
- inputs:
8
- - name: file_path
9
- required: true
10
- description: Path to the file to review
11
-
12
- - name: focus
13
- required: false
14
- description: Focus area (style, security, performance, all)
15
- default: all
16
-
17
- steps:
18
- # Step 1: Detect programming language
19
- - id: detect_language
20
- agent: secretary
21
- action: detect_language
22
- input:
23
- file: "${file_path}"
24
- output: language
25
- description: Detect the programming language of the file
26
-
27
- # Step 2: Code analysis by language expert
28
- - id: analyze
29
- agent: "${language}-expert"
30
- action: analyze_code
31
- input:
32
- file: "${file_path}"
33
- focus: "${focus}"
34
- output: analysis
35
- description: Analyze code using language-specific best practices
36
-
37
- # Step 3: Security review
38
- - id: security_check
39
- agent: qa-lead
40
- action: security_review
41
- input:
42
- file: "${file_path}"
43
- findings: "${analysis}"
44
- output: security
45
- description: Check for security vulnerabilities
46
- on_error: continue
47
-
48
- # Step 4: Generate final report
49
- - id: report
50
- agent: arch-documenter
51
- action: generate_report
52
- input:
53
- file: "${file_path}"
54
- language: "${language}"
55
- analysis: "${analysis}"
56
- security: "${security}"
57
- output: report
58
- description: Generate comprehensive review report
59
-
60
- error_handling:
61
- default: stop
62
-
63
- metadata:
64
- author: oh-my-customcode
65
- version: 1.0.0
66
- tags: [code-review, quality, security]
@@ -1,18 +0,0 @@
1
- # Pipeline Registry
2
-
3
- description: Registry of available pipelines for sequential workflows
4
-
5
- pipelines:
6
- - name: code-review
7
- path: ./examples/code-review.yaml
8
- description: Full code review workflow with language detection
9
-
10
- templates:
11
- - name: pipeline-template
12
- path: ./templates/pipeline-template.yaml
13
- description: Base template for creating new pipelines
14
-
15
- usage:
16
- run: "pipeline:run <name> --input key=value"
17
- list: "pipeline:list"
18
- create: "Use templates/pipeline-template.yaml as base"