@amsterdamdatalabs/enact-extensions 0.1.0 → 0.1.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.
Files changed (152) hide show
  1. package/README.md +94 -20
  2. package/dist/index.d.ts +3 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/install.d.ts +89 -0
  7. package/dist/install.d.ts.map +1 -1
  8. package/dist/install.js +219 -18
  9. package/dist/install.js.map +1 -1
  10. package/dist/validate/index.d.ts +21 -0
  11. package/dist/validate/index.d.ts.map +1 -1
  12. package/dist/validate/index.js +77 -0
  13. package/dist/validate/index.js.map +1 -1
  14. package/extensions/cmux/.agents/plugin.json +37 -0
  15. package/extensions/cmux/skills/cmux/SKILL.md +82 -0
  16. package/extensions/cmux/skills/cmux/agents/openai.yaml +4 -0
  17. package/extensions/cmux/skills/cmux/references/handles-and-identify.md +35 -0
  18. package/extensions/cmux/skills/cmux/references/panes-surfaces.md +37 -0
  19. package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +23 -0
  20. package/extensions/cmux/skills/cmux/references/windows-workspaces.md +31 -0
  21. package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +122 -0
  22. package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +4 -0
  23. package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +66 -0
  24. package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +45 -0
  25. package/extensions/cmux/skills/cmux-workspace/SKILL.md +93 -0
  26. package/extensions/dev-state/.agents/plugin.json +35 -0
  27. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +194 -0
  28. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +4 -0
  29. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +130 -0
  30. package/extensions/devops/.agents/plugin.json +36 -0
  31. package/extensions/devops/skills/azure-devops-cli/SKILL.md +431 -0
  32. package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +4 -0
  33. package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +217 -0
  34. package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +4 -0
  35. package/{plugins/net-revenue-management/.codex-plugin → extensions/net-revenue-management/.agents}/plugin.json +10 -6
  36. package/extensions/plugin-dev/.agents/plugin.json +42 -0
  37. package/extensions/plugin-dev/.mcp.json +3 -0
  38. package/extensions/plugin-dev/agents/agent-creator.md +199 -0
  39. package/extensions/plugin-dev/agents/plugin-validator.md +91 -0
  40. package/extensions/plugin-dev/agents/skill-reviewer.md +212 -0
  41. package/extensions/plugin-dev/commands/_archive/create-marketplace.md +427 -0
  42. package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +12 -0
  43. package/extensions/plugin-dev/commands/create-plugin.md +498 -0
  44. package/extensions/plugin-dev/commands/start.md +81 -0
  45. package/extensions/plugin-dev/hooks/hooks.json +3 -0
  46. package/extensions/plugin-dev/skills/agent-development/SKILL.md +641 -0
  47. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +250 -0
  48. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +461 -0
  49. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +246 -0
  50. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +216 -0
  51. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +226 -0
  52. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +464 -0
  53. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +474 -0
  54. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +176 -0
  55. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +227 -0
  56. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +227 -0
  57. package/extensions/plugin-dev/skills/command-development/SKILL.md +763 -0
  58. package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +612 -0
  59. package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +527 -0
  60. package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +762 -0
  61. package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +769 -0
  62. package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +508 -0
  63. package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +966 -0
  64. package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +943 -0
  65. package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +637 -0
  66. package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +191 -0
  67. package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +447 -0
  68. package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +723 -0
  69. package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +234 -0
  70. package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +160 -0
  71. package/extensions/plugin-dev/skills/hook-development/SKILL.md +861 -0
  72. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +55 -0
  73. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +57 -0
  74. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +48 -0
  75. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +871 -0
  76. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +145 -0
  77. package/extensions/plugin-dev/skills/hook-development/references/migration.md +392 -0
  78. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +430 -0
  79. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +181 -0
  80. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +153 -0
  81. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +276 -0
  82. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  83. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +775 -0
  84. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +20 -0
  85. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +19 -0
  86. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +38 -0
  87. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +26 -0
  88. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +601 -0
  89. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +190 -0
  90. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +572 -0
  91. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +623 -0
  92. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +222 -0
  93. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +705 -0
  94. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +774 -0
  95. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +83 -0
  96. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +611 -0
  97. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +289 -0
  98. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +592 -0
  99. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +233 -0
  100. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +193 -0
  101. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +625 -0
  102. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +116 -0
  103. package/extensions/plugin-dev/skills/skill-development/SKILL.md +564 -0
  104. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +465 -0
  105. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +167 -0
  106. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +111 -0
  107. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +225 -0
  108. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +39 -0
  109. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +379 -0
  110. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +210 -0
  111. package/package.json +8 -11
  112. package/scripts/enact-extensions.mjs +751 -16
  113. package/scripts/hooks/session-start-drift-check.mjs +58 -0
  114. package/scripts/lib/build-index.mjs +50 -0
  115. package/scripts/lib/bundle-hash.mjs +137 -0
  116. package/scripts/lib/hooks.mjs +389 -0
  117. package/scripts/lib/ledger.mjs +162 -0
  118. package/scripts/lib/list-bundles.mjs +70 -0
  119. package/scripts/lib/outdated.mjs +144 -0
  120. package/scripts/lib/provision-mcp.mjs +369 -0
  121. package/scripts/lib/resolve-bundle.mjs +121 -0
  122. package/scripts/lib/run-install.mjs +321 -39
  123. package/scripts/lib/run-uninstall.mjs +220 -0
  124. package/scripts/lib/run-update.mjs +152 -0
  125. package/scripts/lib/run-validate.mjs +12 -18
  126. package/scripts/lib/serve.mjs +454 -0
  127. package/scripts/postinstall.mjs +63 -0
  128. package/scripts/setup-enact-context.sh +2 -2
  129. package/spec/index.json +59 -0
  130. package/web/assets/README.md +111 -0
  131. package/web/assets/logo-full.png +0 -0
  132. package/web/assets/logo-slim.png +0 -0
  133. package/web/assets/tokens/base.css +45 -0
  134. package/web/assets/tokens/colors.css +248 -0
  135. package/web/assets/tokens/effects.css +24 -0
  136. package/web/assets/tokens/fonts.css +8 -0
  137. package/web/assets/tokens/index.css +18 -0
  138. package/web/assets/tokens/spacing.css +50 -0
  139. package/web/index.html +1188 -0
  140. package/.agents/plugins/marketplace.json +0 -20
  141. package/catalog/enact-context.json +0 -9
  142. package/catalog/enact-factory.json +0 -7
  143. package/catalog/enact-operator.json +0 -7
  144. package/catalog/enact-wiki.json +0 -7
  145. package/catalog/net-revenue-management.json +0 -8
  146. package/scripts/rename-supervisor-to-operator.pl +0 -66
  147. package/scripts/sync-manifests.mjs +0 -23
  148. package/scripts/validate-catalog.mjs +0 -37
  149. package/scripts/validate-plugin.mjs +0 -10
  150. /package/{plugins → extensions}/net-revenue-management/.mcp.json +0 -0
  151. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -0
  152. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -0
@@ -0,0 +1,55 @@
1
+ #!/bin/bash
2
+ # Example SessionStart hook for loading project context
3
+ # This script detects project type and sets environment variables
4
+
5
+ set -euo pipefail
6
+
7
+ # Navigate to project directory
8
+ cd "$CLAUDE_PROJECT_DIR" || exit 1
9
+
10
+ echo "Loading project context..."
11
+
12
+ # Detect project type and set environment
13
+ if [ -f "package.json" ]; then
14
+ echo "📦 Node.js project detected"
15
+ echo "export PROJECT_TYPE=nodejs" >> "$CLAUDE_ENV_FILE"
16
+
17
+ # Check if TypeScript
18
+ if [ -f "tsconfig.json" ]; then
19
+ echo "export USES_TYPESCRIPT=true" >> "$CLAUDE_ENV_FILE"
20
+ fi
21
+
22
+ elif [ -f "Cargo.toml" ]; then
23
+ echo "🦀 Rust project detected"
24
+ echo "export PROJECT_TYPE=rust" >> "$CLAUDE_ENV_FILE"
25
+
26
+ elif [ -f "go.mod" ]; then
27
+ echo "🐹 Go project detected"
28
+ echo "export PROJECT_TYPE=go" >> "$CLAUDE_ENV_FILE"
29
+
30
+ elif [ -f "pyproject.toml" ] || [ -f "setup.py" ]; then
31
+ echo "🐍 Python project detected"
32
+ echo "export PROJECT_TYPE=python" >> "$CLAUDE_ENV_FILE"
33
+
34
+ elif [ -f "pom.xml" ]; then
35
+ echo "☕ Java (Maven) project detected"
36
+ echo "export PROJECT_TYPE=java" >> "$CLAUDE_ENV_FILE"
37
+ echo "export BUILD_SYSTEM=maven" >> "$CLAUDE_ENV_FILE"
38
+
39
+ elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
40
+ echo "☕ Java/Kotlin (Gradle) project detected"
41
+ echo "export PROJECT_TYPE=java" >> "$CLAUDE_ENV_FILE"
42
+ echo "export BUILD_SYSTEM=gradle" >> "$CLAUDE_ENV_FILE"
43
+
44
+ else
45
+ echo "❓ Unknown project type"
46
+ echo "export PROJECT_TYPE=unknown" >> "$CLAUDE_ENV_FILE"
47
+ fi
48
+
49
+ # Check for CI configuration
50
+ if [ -f ".github/workflows" ] || [ -f ".gitlab-ci.yml" ] || [ -f ".circleci/config.yml" ]; then
51
+ echo "export HAS_CI=true" >> "$CLAUDE_ENV_FILE"
52
+ fi
53
+
54
+ echo "Project context loaded successfully"
55
+ exit 0
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+ # Example PreToolUse hook for validating Bash commands
3
+ # This script demonstrates bash command validation patterns
4
+
5
+ set -euo pipefail
6
+
7
+ # Read input from stdin
8
+ input=$(cat)
9
+
10
+ # Extract command
11
+ command=$(echo "$input" | jq -r '.tool_input.command // empty')
12
+
13
+ # Validate command exists
14
+ if [ -z "$command" ]; then
15
+ echo '{"continue": true}' # No command to validate
16
+ exit 0
17
+ fi
18
+
19
+ # SECURITY: Check for command chaining/injection patterns FIRST
20
+ # These checks must run before the "safe command" allowlist to prevent bypasses
21
+ # like: echo $(rm -rf /), ls; malicious, pwd && evil, whoami | exfil
22
+ # Note: This is not exhaustive - production hooks should consider additional
23
+ # patterns like newlines (\n), null bytes (\x00), and shell-specific syntax
24
+ # shellcheck disable=SC2016 # Single quotes intentional - matching literal $( and ` characters
25
+ if [[ "$command" == *";"* ]] || [[ "$command" == *"|"* ]] ||
26
+ [[ "$command" == *'$('* ]] || [[ "$command" == *'`'* ]] ||
27
+ [[ "$command" == *"&&"* ]] || [[ "$command" == *"||"* ]]; then
28
+ echo '{"hookSpecificOutput": {"permissionDecision": "ask"}, "systemMessage": "Command chaining detected - requires review"}' >&2
29
+ exit 2
30
+ fi
31
+
32
+ # Check for obviously safe commands (quick approval)
33
+ # IMPORTANT: This check is only safe because chaining patterns are caught above
34
+ if [[ "$command" =~ ^(ls|pwd|echo|date|whoami)(\s|$) ]]; then
35
+ exit 0
36
+ fi
37
+
38
+ # Check for destructive operations
39
+ if [[ "$command" == *"rm -rf"* ]] || [[ "$command" == *"rm -fr"* ]]; then
40
+ echo '{"hookSpecificOutput": {"permissionDecision": "deny"}, "systemMessage": "Dangerous command detected: rm -rf"}' >&2
41
+ exit 2
42
+ fi
43
+
44
+ # Check for other dangerous commands
45
+ if [[ "$command" == *"dd if="* ]] || [[ "$command" == *"mkfs"* ]] || [[ "$command" == *"> /dev/"* ]]; then
46
+ echo '{"hookSpecificOutput": {"permissionDecision": "deny"}, "systemMessage": "Dangerous system operation detected"}' >&2
47
+ exit 2
48
+ fi
49
+
50
+ # Check for privilege escalation
51
+ if [[ "$command" == sudo* ]] || [[ "$command" == su* ]]; then
52
+ echo '{"hookSpecificOutput": {"permissionDecision": "ask"}, "systemMessage": "Command requires elevated privileges"}' >&2
53
+ exit 2
54
+ fi
55
+
56
+ # Approve the operation
57
+ exit 0
@@ -0,0 +1,48 @@
1
+ #!/bin/bash
2
+ # Example PreToolUse hook for validating Write/Edit operations
3
+ # This script demonstrates file write validation patterns
4
+
5
+ set -euo pipefail
6
+
7
+ # Read input from stdin
8
+ input=$(cat)
9
+
10
+ # Extract file path and content
11
+ file_path=$(echo "$input" | jq -r '.tool_input.file_path // empty')
12
+
13
+ # Validate path exists
14
+ if [ -z "$file_path" ]; then
15
+ echo '{"continue": true}' # No path to validate
16
+ exit 0
17
+ fi
18
+
19
+ # Check for path traversal
20
+ # NOTE: This basic check catches literal ".." but has limitations:
21
+ # - Does not detect URL-encoded traversal (%2e%2e)
22
+ # - Cannot detect symlink-based traversal where resolved path escapes bounds
23
+ # - Shell expansion could bypass in some contexts
24
+ # For production hooks, consider using:
25
+ # resolved=$(realpath -m "$file_path" 2>/dev/null || echo "$file_path")
26
+ # and comparing against an allowed directory prefix
27
+ if [[ "$file_path" == *".."* ]]; then
28
+ jq -n --arg path "$file_path" \
29
+ '{"hookSpecificOutput": {"permissionDecision": "deny"}, "systemMessage": "Path traversal detected in: \($path)"}' >&2
30
+ exit 2
31
+ fi
32
+
33
+ # Check for system directories
34
+ if [[ "$file_path" == /etc/* ]] || [[ "$file_path" == /sys/* ]] || [[ "$file_path" == /usr/* ]]; then
35
+ jq -n --arg path "$file_path" \
36
+ '{"hookSpecificOutput": {"permissionDecision": "deny"}, "systemMessage": "Cannot write to system directory: \($path)"}' >&2
37
+ exit 2
38
+ fi
39
+
40
+ # Check for sensitive files
41
+ if [[ "$file_path" == *.env ]] || [[ "$file_path" == *secret* ]] || [[ "$file_path" == *credentials* ]]; then
42
+ jq -n --arg path "$file_path" \
43
+ '{"hookSpecificOutput": {"permissionDecision": "ask"}, "systemMessage": "Writing to potentially sensitive file: \($path)"}' >&2
44
+ exit 2
45
+ fi
46
+
47
+ # Approve the operation
48
+ exit 0