@the-agenticflow/openflows 0.1.3 → 0.1.6

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 (85) hide show
  1. package/.env.example +60 -0
  2. package/README.md +156 -113
  3. package/bin/LICENSE +21 -0
  4. package/bin/README.md +535 -0
  5. package/bin/agentflow-bin +0 -0
  6. package/bin/agentflow-dashboard-bin +0 -0
  7. package/bin/agentflow-doctor-bin +0 -0
  8. package/bin/agentflow-setup-bin +0 -0
  9. package/bin/openflows.js +285 -3
  10. package/bin/orchestration/agent/agents/forge.agent.md +110 -0
  11. package/bin/orchestration/agent/agents/lore.agent.md +27 -0
  12. package/bin/orchestration/agent/agents/nexus.agent.md +201 -0
  13. package/bin/orchestration/agent/agents/sentinel.agent.md +96 -0
  14. package/bin/orchestration/agent/agents/vessel.agent.md +38 -0
  15. package/bin/orchestration/agent/registry.json +10 -0
  16. package/bin/orchestration/agent/standards/CODING.md +22 -0
  17. package/bin/orchestration/agent/standards/REVIEW.md +15 -0
  18. package/bin/orchestration/agent/standards/SECURITY.md +72 -0
  19. package/bin/orchestration/plugin/commands/assign.md +45 -0
  20. package/bin/orchestration/plugin/commands/check-ci.md +26 -0
  21. package/bin/orchestration/plugin/commands/document-pr.md +32 -0
  22. package/bin/orchestration/plugin/commands/gate-approve.md +39 -0
  23. package/bin/orchestration/plugin/commands/handoff.md +75 -0
  24. package/bin/orchestration/plugin/commands/merge.md +47 -0
  25. package/bin/orchestration/plugin/commands/plan.md +66 -0
  26. package/bin/orchestration/plugin/commands/segment-done.md +50 -0
  27. package/bin/orchestration/plugin/commands/status-check.md +28 -0
  28. package/bin/orchestration/plugin/commands/status.md +94 -0
  29. package/bin/orchestration/plugin/commands/update-changelog.md +37 -0
  30. package/bin/orchestration/plugin/hooks/forge/post_write_lint.sh +76 -0
  31. package/bin/orchestration/plugin/hooks/forge/pre_bash_guard.sh +81 -0
  32. package/bin/orchestration/plugin/hooks/forge/pre_compact_handoff.sh +28 -0
  33. package/bin/orchestration/plugin/hooks/forge/pre_write_check.sh +77 -0
  34. package/bin/orchestration/plugin/hooks/forge/session_start.sh +59 -0
  35. package/bin/orchestration/plugin/hooks/forge/stop_require_artifact.sh +75 -0
  36. package/bin/orchestration/plugin/hooks/lore/session-start.sh +13 -0
  37. package/bin/orchestration/plugin/hooks/nexus/init-session.sh +23 -0
  38. package/bin/orchestration/plugin/hooks/nexus/log-decision.sh +10 -0
  39. package/bin/orchestration/plugin/hooks/sentinel/post_write_validate.sh +59 -0
  40. package/bin/orchestration/plugin/hooks/sentinel/pre_bash_readonly_guard.sh +107 -0
  41. package/bin/orchestration/plugin/hooks/sentinel/session_start.sh +74 -0
  42. package/bin/orchestration/plugin/hooks/sentinel/stop_require_eval.sh +57 -0
  43. package/bin/orchestration/plugin/hooks/vessel/log-merge-status.sh +7 -0
  44. package/bin/orchestration/plugin/hooks/vessel/session-start.sh +14 -0
  45. package/bin/orchestration/plugin/mcp/mcp.json.template +26 -0
  46. package/bin/orchestration/plugin/plugin.json +66 -0
  47. package/bin/orchestration/plugin/skills/forge-algorithmic-art.md +24 -0
  48. package/bin/orchestration/plugin/skills/forge-canvas-design.md +25 -0
  49. package/bin/orchestration/plugin/skills/forge-coding.md +161 -0
  50. package/bin/orchestration/plugin/skills/forge-frontend-design.md +30 -0
  51. package/bin/orchestration/plugin/skills/forge-mcp-builder.md +37 -0
  52. package/bin/orchestration/plugin/skills/forge-planning.md +102 -0
  53. package/bin/orchestration/plugin/skills/forge-skill-creator.md +25 -0
  54. package/bin/orchestration/plugin/skills/forge-web-artifacts-builder.md +29 -0
  55. package/bin/orchestration/plugin/skills/lore-brand-guidelines.md +33 -0
  56. package/bin/orchestration/plugin/skills/lore-changelog.md +69 -0
  57. package/bin/orchestration/plugin/skills/lore-doc-coauthoring.md +33 -0
  58. package/bin/orchestration/plugin/skills/lore-documentation.md +57 -0
  59. package/bin/orchestration/plugin/skills/lore-docx.md +20 -0
  60. package/bin/orchestration/plugin/skills/lore-pdf.md +20 -0
  61. package/bin/orchestration/plugin/skills/lore-pptx.md +23 -0
  62. package/bin/orchestration/plugin/skills/lore-theme-factory.md +20 -0
  63. package/bin/orchestration/plugin/skills/lore-xlsx.md +20 -0
  64. package/bin/orchestration/plugin/skills/nexus-doc-coauthoring.md +21 -0
  65. package/bin/orchestration/plugin/skills/nexus-internal-comms.md +28 -0
  66. package/bin/orchestration/plugin/skills/nexus-orchestration.md +63 -0
  67. package/bin/orchestration/plugin/skills/nexus-skill-creator.md +15 -0
  68. package/bin/orchestration/plugin/skills/nexus-slack-gif-creator.md +21 -0
  69. package/bin/orchestration/plugin/skills/nexus-triage.md +56 -0
  70. package/bin/orchestration/plugin/skills/nexus-xlsx.md +20 -0
  71. package/bin/orchestration/plugin/skills/sentinel-algorithmic-art.md +20 -0
  72. package/bin/orchestration/plugin/skills/sentinel-criteria.md +115 -0
  73. package/bin/orchestration/plugin/skills/sentinel-frontend-design.md +20 -0
  74. package/bin/orchestration/plugin/skills/sentinel-review.md +124 -0
  75. package/bin/orchestration/plugin/skills/sentinel-web-artifacts-builder.md +20 -0
  76. package/bin/orchestration/plugin/skills/sentinel-webapp-testing.md +34 -0
  77. package/bin/orchestration/plugin/skills/shared-claude-api.md +25 -0
  78. package/bin/orchestration/plugin/skills/vessel-ci-gate.md +68 -0
  79. package/bin/orchestration/plugin/skills/vessel-internal-comms.md +20 -0
  80. package/bin/orchestration/plugin/skills/vessel-mcp-builder.md +21 -0
  81. package/bin/orchestration/plugin/skills/vessel-merge-protocol.md +113 -0
  82. package/bin/orchestration/plugin/skills/vessel-pdf.md +20 -0
  83. package/bin/orchestration/plugin/skills/vessel-webapp-testing.md +34 -0
  84. package/package.json +8 -3
  85. package/scripts/install.js +162 -9
@@ -0,0 +1,107 @@
1
+ #!/bin/bash
2
+ # SENTINEL Pre-Bash Guard Hook
3
+ # Enforces read-only mode - SENTINEL cannot modify source files
4
+ #
5
+ # Environment:
6
+ # SPRINTLESS_WORKTREE - the worktree path (source code)
7
+ # SPRINTLESS_SHARED - the shared directory (allowed writes)
8
+ # CLAUDE_BASH_COMMAND - the command about to run (injected by Claude Code)
9
+
10
+ WORKTREE="${SPRINTLESS_WORKTREE:-}"
11
+ SHARED="${SPRINTLESS_SHARED:-}"
12
+ CMD="${CLAUDE_BASH_COMMAND:-}"
13
+
14
+ # If no command, allow
15
+ if [ -z "$CMD" ]; then
16
+ exit 0
17
+ fi
18
+
19
+ # Blocked commands - SENTINEL cannot use these at all
20
+ BLOCKED_PATTERNS=(
21
+ "git "
22
+ "git"
23
+ "rm "
24
+ "rm"
25
+ "sudo "
26
+ "npm install"
27
+ "pip install"
28
+ "cargo install"
29
+ "mv "
30
+ "cp "
31
+ "chmod"
32
+ "chown"
33
+ )
34
+
35
+ for pattern in "${BLOCKED_PATTERNS[@]}"; do
36
+ if [[ "$CMD" == *"$pattern"* ]]; then
37
+ echo "=============================================="
38
+ echo " BLOCKED: Command not allowed for SENTINEL"
39
+ echo "=============================================="
40
+ echo ""
41
+ echo "Command: ${CMD}"
42
+ echo ""
43
+ echo "SENTINEL is read-only. You cannot:"
44
+ echo " - Use git commands"
45
+ echo " - Delete files (rm)"
46
+ echo " - Move or copy files"
47
+ echo " - Install packages"
48
+ echo " - Modify permissions"
49
+ echo ""
50
+ echo "You CAN:"
51
+ echo " - Read files (cat, head, tail, less)"
52
+ echo " - Run tests and linters"
53
+ echo " - Search code (grep, find)"
54
+ echo " - Write to shared/ directory"
55
+ echo ""
56
+ exit 2
57
+ fi
58
+ done
59
+
60
+ # Check if command writes to source tree
61
+ if [ -n "$WORKTREE" ]; then
62
+ # Patterns that write files
63
+ WRITE_PATTERNS=(
64
+ " > "
65
+ " >> "
66
+ " 2> "
67
+ " | tee "
68
+ "sed -i"
69
+ "awk -i"
70
+ "truncate"
71
+ "dd if="
72
+ )
73
+
74
+ for pattern in "${WRITE_PATTERNS[@]}"; do
75
+ if [[ "$CMD" == *"$pattern"* ]]; then
76
+ # Check if the redirect target is in worktree
77
+ # Extract the file path after the redirect
78
+ REDIRECT_FILE=$(echo "$CMD" | grep -oP '(?<=[<>])\s*\S+' | head -1 | tr -d ' ')
79
+
80
+ if [ -n "$REDIRECT_FILE" ]; then
81
+ # Get absolute path
82
+ if [[ "$REDIRECT_FILE" != /* ]]; then
83
+ REDIRECT_FILE="${WORKTREE}/${REDIRECT_FILE}"
84
+ fi
85
+
86
+ # Check if it's inside worktree but NOT in shared
87
+ if [[ "$REDIRECT_FILE" == "$WORKTREE"* ]] && [[ "$REDIRECT_FILE" != *"$SHARED"* ]]; then
88
+ echo "=============================================="
89
+ echo " BLOCKED: Cannot write to source tree"
90
+ echo "=============================================="
91
+ echo ""
92
+ echo "Command: ${CMD}"
93
+ echo ""
94
+ echo "SENTINEL can only write to: ${SHARED}"
95
+ echo "Attempted write to: ${REDIRECT_FILE}"
96
+ echo ""
97
+ echo "All your outputs (eval files, reviews) go in shared/."
98
+ echo ""
99
+ exit 2
100
+ fi
101
+ fi
102
+ fi
103
+ done
104
+ fi
105
+
106
+ # Allow the command
107
+ exit 0
@@ -0,0 +1,74 @@
1
+ #!/bin/bash
2
+ # SENTINEL Session Start Hook
3
+ # Determines segment mode and reads the correct input artifacts
4
+ #
5
+ # Environment:
6
+ # SPRINTLESS_SHARED - the shared directory
7
+ # SPRINTLESS_SEGMENT - segment number (set by harness)
8
+
9
+ SHARED="${SPRINTLESS_SHARED}"
10
+ SEGMENT="${SPRINTLESS_SEGMENT:-1}"
11
+
12
+ echo "=============================================="
13
+ echo " SENTINEL SESSION STARTED"
14
+ echo "=============================================="
15
+ echo ""
16
+ echo "Segment: ${SEGMENT}"
17
+ echo ""
18
+
19
+ # Determine mode based on what files exist
20
+ if [ "${SEGMENT}" = "final" ] || [ -f "${SHARED}/DONE.md" ]; then
21
+ echo "MODE: FINAL_REVIEW"
22
+ echo ""
23
+ echo "Reading DONE.md to verify completion..."
24
+ if [ -f "${SHARED}/DONE.md" ]; then
25
+ echo "--- DONE.md ---"
26
+ head -50 "${SHARED}/DONE.md"
27
+ echo "..."
28
+ else
29
+ echo "ERROR: DONE.md not found. Cannot perform final review."
30
+ exit 1
31
+ fi
32
+ elif [ -f "${SHARED}/PLAN.md" ]; then
33
+ echo "MODE: SEGMENT_REVIEW"
34
+ echo ""
35
+ echo "Reading PLAN.md and segment inputs..."
36
+ echo ""
37
+ echo "--- PLAN.md (first 30 lines) ---"
38
+ head -30 "${SHARED}/PLAN.md"
39
+ echo "..."
40
+ echo ""
41
+ if [ -f "${SHARED}/WORKLOG.md" ]; then
42
+ echo "--- WORKLOG.md (last 20 lines) ---"
43
+ tail -20 "${SHARED}/WORKLOG.md"
44
+ echo ""
45
+ fi
46
+ else
47
+ echo "MODE: UNKNOWN - No PLAN.md found"
48
+ echo "This may be an initial setup. Check TICKET.md and TASK.md."
49
+ if [ -f "${SHARED}/TICKET.md" ]; then
50
+ echo ""
51
+ echo "--- TICKET.md ---"
52
+ cat "${SHARED}/TICKET.md"
53
+ fi
54
+ fi
55
+
56
+ echo ""
57
+ echo "=============================================="
58
+ echo " YOUR MISSION"
59
+ echo "=============================================="
60
+ echo ""
61
+ echo "1. Read the segment changes from WORKLOG.md"
62
+ echo "2. Run tests and linters to verify quality"
63
+ echo "3. Write your evaluation to segment-${SEGMENT}-eval.md"
64
+ echo ""
65
+ echo "Evaluation must include:"
66
+ echo " - ## Summary"
67
+ echo " - ## Tests Run"
68
+ echo " - ## Issues Found (if any)"
69
+ echo " - ## Verdict (APPROVED / NEEDS_WORK)"
70
+ echo ""
71
+ echo "If NEEDS_WORK, list specific issues that must be fixed."
72
+ echo ""
73
+
74
+ exit 0
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+ # SENTINEL Stop Hook
3
+ # Ensures SENTINEL writes an eval file before exiting
4
+ #
5
+ # Environment:
6
+ # SPRINTLESS_SHARED - the shared directory
7
+ # SPRINTLESS_SEGMENT - segment number (set by harness)
8
+
9
+ SHARED="${SPRINTLESS_SHARED}"
10
+ SEGMENT="${SPRINTLESS_SEGMENT:-1}"
11
+
12
+ # Determine expected eval file
13
+ if [ "${SEGMENT}" = "final" ]; then
14
+ EVAL_FILE="${SHARED}/final-review.md"
15
+ else
16
+ EVAL_FILE="${SHARED}/segment-${SEGMENT}-eval.md"
17
+ fi
18
+
19
+ # Check if eval file exists
20
+ if [ -f "$EVAL_FILE" ]; then
21
+ # Validate it has a verdict
22
+ if grep -q "## Verdict" "$EVAL_FILE"; then
23
+ VERDICT=$(grep -A1 "## Verdict" "$EVAL_FILE" | tail -1 | tr -d ' ')
24
+
25
+ if [ "$VERDICT" = "APPROVED" ] || [ "$VERDICT" = "NEEDS_WORK" ]; then
26
+ echo "Evaluation complete: ${VERDICT}"
27
+ exit 0
28
+ else
29
+ echo "ERROR: Invalid verdict in ${EVAL_FILE}"
30
+ echo "Verdict must be APPROVED or NEEDS_WORK, got: ${VERDICT}"
31
+ exit 2
32
+ fi
33
+ else
34
+ echo "ERROR: ${EVAL_FILE} missing ## Verdict section"
35
+ exit 2
36
+ fi
37
+ fi
38
+
39
+ # No eval file - block exit
40
+ echo "=============================================="
41
+ echo " BLOCKED: Cannot exit without evaluation"
42
+ echo "=============================================="
43
+ echo ""
44
+ echo "You must write your evaluation to:"
45
+ echo " ${EVAL_FILE}"
46
+ echo ""
47
+ echo "Required sections:"
48
+ echo " - ## Summary"
49
+ echo " - ## Tests Run"
50
+ echo " - ## Issues Found (if any)"
51
+ echo " - ## Verdict (APPROVED or NEEDS_WORK)"
52
+ echo ""
53
+ echo "If NEEDS_WORK, include:"
54
+ echo " - ## Required Fixes (specific, actionable items)"
55
+ echo ""
56
+
57
+ exit 2
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ # VESSEL Stop Hook
3
+ # Logs merge status on exit
4
+
5
+ echo "VESSEL session ending. Merge status logged."
6
+
7
+ exit 0
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+ # VESSEL Session Start Hook
3
+ # Initializes the deployer session
4
+
5
+ echo "=========================================="
6
+ echo "VESSEL Session Starting"
7
+ echo "=========================================="
8
+ echo ""
9
+ echo "Checking for open PRs from forge branches..."
10
+
11
+ # Vessel monitors open PRs and CI status
12
+ # This would typically query GitHub API
13
+
14
+ exit 0
@@ -0,0 +1,26 @@
1
+ {
2
+ "mcpServers": {
3
+ "github": {
4
+ "command": "npx",
5
+ "args": ["-y", "@modelcontextprotocol/server-github"],
6
+ "env": {
7
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "${SPRINTLESS_GITHUB_TOKEN}"
8
+ }
9
+ },
10
+ "filesystem": {
11
+ "command": "npx",
12
+ "args": [
13
+ "-y",
14
+ "@modelcontextprotocol/server-filesystem",
15
+ "${SPRINTLESS_WORKTREE}"
16
+ ]
17
+ },
18
+ "shell": {
19
+ "command": "shell-mcp-server",
20
+ "args": [
21
+ "--allowlist",
22
+ "orchestration/agent/tooling/run-tests.sh,cargo clippy,cargo test,npx eslint,npx jest,ruff check"
23
+ ]
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "orchestration",
3
+ "version": "3.0.0",
4
+ "description": "Autonomous agent pair tooling for AgentFlow FORGE-SENTINEL architecture",
5
+ "skills": {
6
+ "forge": [
7
+ "skills/forge-coding.md",
8
+ "skills/forge-planning.md",
9
+ "skills/forge-frontend-design.md",
10
+ "skills/forge-mcp-builder.md",
11
+ "skills/forge-skill-creator.md",
12
+ "skills/forge-canvas-design.md",
13
+ "skills/forge-web-artifacts-builder.md",
14
+ "skills/forge-algorithmic-art.md",
15
+ "skills/shared-claude-api.md"
16
+ ],
17
+ "sentinel": [
18
+ "skills/sentinel-review.md",
19
+ "skills/sentinel-criteria.md",
20
+ "skills/sentinel-webapp-testing.md",
21
+ "skills/sentinel-frontend-design.md",
22
+ "skills/sentinel-web-artifacts-builder.md",
23
+ "skills/sentinel-algorithmic-art.md",
24
+ "skills/shared-claude-api.md"
25
+ ],
26
+ "nexus": [
27
+ "skills/nexus-orchestration.md",
28
+ "skills/nexus-triage.md",
29
+ "skills/nexus-internal-comms.md",
30
+ "skills/nexus-doc-coauthoring.md",
31
+ "skills/nexus-skill-creator.md",
32
+ "skills/nexus-xlsx.md",
33
+ "skills/nexus-slack-gif-creator.md",
34
+ "skills/shared-claude-api.md"
35
+ ],
36
+ "vessel": [
37
+ "skills/vessel-ci-gate.md",
38
+ "skills/vessel-merge-protocol.md",
39
+ "skills/vessel-webapp-testing.md",
40
+ "skills/vessel-internal-comms.md",
41
+ "skills/vessel-mcp-builder.md",
42
+ "skills/vessel-pdf.md",
43
+ "skills/shared-claude-api.md"
44
+ ],
45
+ "lore": [
46
+ "skills/lore-documentation.md",
47
+ "skills/lore-changelog.md",
48
+ "skills/lore-doc-coauthoring.md",
49
+ "skills/lore-brand-guidelines.md",
50
+ "skills/lore-theme-factory.md",
51
+ "skills/lore-docx.md",
52
+ "skills/lore-pptx.md",
53
+ "skills/lore-xlsx.md",
54
+ "skills/lore-pdf.md",
55
+ "skills/shared-claude-api.md"
56
+ ]
57
+ },
58
+ "hooks": {
59
+ "forge": "hooks/forge/",
60
+ "sentinel": "hooks/sentinel/",
61
+ "nexus": "hooks/nexus/",
62
+ "vessel": "hooks/vessel/",
63
+ "lore": "hooks/lore/"
64
+ },
65
+ "commands": "commands/"
66
+ }
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: algorithmic-art
3
+ description: Create generative, code-based art and visualizations using P5.JS and algorithmic principles.
4
+ ---
5
+
6
+ # FORGE Algorithmic Art Skill
7
+
8
+ Use this skill to create unique, generative visual artifacts or to visualize complex data structures algorithmically.
9
+
10
+ ## Algorithmic Philosophy
11
+
12
+ - **Conceptual Seed**: Start with a mathematical or natural phenomenon (e.g., "Voronoi Diagrams", "Lindenmayer Systems", "Fluid Dynamics").
13
+ - **Deduce Style**: Choose an aesthetic (e.g., Generative Minimalism, Digital Brutalism, Organic Complexity).
14
+ - **Technical Implementation**: Use P5.JS to implement the visual logic.
15
+
16
+ ## Craftsmanship Requirements
17
+
18
+ - **Efficiency**: Favor procedural generation over static assets.
19
+ - **Interactivity**: Where appropriate, make the art responsive to user input.
20
+ - **Clean Code**: Structure your P5.JS scripts for readability and modularity.
21
+
22
+ ## Output Format
23
+
24
+ Deliver your implementation in a self-contained HTML/JS artifact.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: canvas-design
3
+ description: Visual philosophy and design principles for creating impactful visual content.
4
+ ---
5
+
6
+ # FORGE Canvas Design Skill
7
+
8
+ Use this skill to establish a strong visual philosophy before creating visual artifacts, posters, or UI layouts.
9
+
10
+ ## Visual Philosophy Creation
11
+
12
+ - **Deduce the Conceptual Seed**: What is the core idea? (e.g., "The Precision of a Swiss Watch", "The Organic Flow of Water").
13
+ - **Establish Principles**: define constraints (e.g., "Only 3 colors", "Strict Grid", "Asymmetric Balance").
14
+ - **Deduce Style**: Use specific visual descriptors (e.g., Brutalist, Geometric, Soft Minimalism).
15
+
16
+ ## Essential Principles
17
+
18
+ - **Contrast**: Use size, color, and weight to create impact.
19
+ - **Hierarchy**: Guide the viewer's eye to the most important element first.
20
+ - **Negative Space**: Give your design room to breathe. Don't crowd the canvas.
21
+ - **Intentionality**: Every element must have a purpose. If it doesn't add value, remove it.
22
+
23
+ ## Execution
24
+
25
+ Once the philosophy is established, apply it consistently across all components of the artifact.
@@ -0,0 +1,161 @@
1
+ # FORGE Coding Skill
2
+
3
+ ## Your role
4
+
5
+ You are FORGE, the generator in a FORGE-SENTINEL pair.
6
+ Your job is to produce correct, complete, well-tested implementations.
7
+ You work in segments. After each segment you submit to SENTINEL.
8
+ Quality comes from the pair loop, not from you alone.
9
+
10
+ ## Before writing any code
11
+
12
+ 1. Read `TICKET.md` from `${SPRINTLESS_SHARED}/TICKET.md` - understand what you are building
13
+ 2. Read `CONTRACT.md` from `${SPRINTLESS_SHARED}/CONTRACT.md` - this is your definition of done
14
+ 3. Search the codebase - find existing patterns before inventing new ones
15
+ - Use Glob and Grep tools to find relevant files
16
+ - Look for similar functionality in existing code
17
+
18
+ ## Coding standards
19
+
20
+ - All standards are in `orchestration/agent/standards/CODING.md` (if it exists)
21
+ - All architecture patterns are in `orchestration/agent/arch/patterns.md` (if it exists)
22
+ - API contracts are in `orchestration/agent/arch/api-contracts.md` (if it exists)
23
+ - **READ these before implementing. They are not optional.**
24
+
25
+ ## Testing discipline
26
+
27
+ - Every new function needs a test
28
+ - Every changed file needs updated tests
29
+ - Run tests after every segment: `orchestration/agent/tooling/run-tests.sh`
30
+ - Do not submit a segment with failing tests
31
+
32
+ ## Error handling
33
+
34
+ - Never throw raw Error - use the project's error type (e.g., `AppError` from `src/errors/`)
35
+ - Every async function must have explicit error handling
36
+ - Network calls must have timeout and retry logic
37
+
38
+ ## Submitting a segment
39
+
40
+ When you believe a segment is complete:
41
+
42
+ 1. Run tests - all must pass
43
+ 2. Run linter - zero warnings
44
+ 3. Use `/segment-done` command to commit and notify SENTINEL
45
+ 4. Wait for `segment-N-eval.md` to appear in `${SPRINTLESS_SHARED}/`
46
+
47
+ ## Handling SENTINEL feedback
48
+
49
+ If SENTINEL returns `CHANGES_REQUESTED`:
50
+
51
+ - Read the `## Specific feedback` section carefully
52
+ - Each item has: `file:line:problem:fix`
53
+ - Fix **only** the specific items listed - do not refactor beyond what's requested
54
+ - Re-run tests and linter
55
+ - Re-submit with `/segment-done`
56
+
57
+ ## File locking
58
+
59
+ Before writing to any file, the `pre_write_check.sh` hook validates ownership.
60
+
61
+ - If you get `BLOCKED: File locked by pair-X`, you must:
62
+ 1. Find an alternative implementation that avoids this file, OR
63
+ 2. Set STATUS.json to `BLOCKED` with reason `FILE_LOCK_CONFLICT`
64
+
65
+ ## Context reset
66
+
67
+ If you receive a "CONTEXT RESET REQUIRED" message:
68
+
69
+ 1. Run `/handoff` command immediately
70
+ 2. This writes `HANDOFF.md` with your current state
71
+ 3. Exit cleanly - a fresh FORGE will continue from your handoff
72
+
73
+ ## Valid STATUS.json Status Values
74
+
75
+ When writing `STATUS.json`, you MUST use one of these exact status strings.
76
+ Any other value will be treated as `BLOCKED` and your work will be wasted.
77
+
78
+ | Status | When to use |
79
+ |---|---|
80
+ | `PR_OPENED` | Work complete and PR created (include `pr_url`, `pr_number`, `branch`) |
81
+ | `COMPLETE` | All work done but PR creation deferred to harness |
82
+ | `BLOCKED` | Cannot proceed (include `reason` and `blockers`) |
83
+ | `FUEL_EXHAUSTED` | Budget/tokens exhausted |
84
+ | `PENDING_REVIEW` | Work paused, waiting for review |
85
+ | `AWAITING_SENTINEL_REVIEW` | Segment done, waiting for SENTINEL evaluation |
86
+ | `APPROVED_READY` | Changes requested by SENTINEL have been addressed |
87
+ | `SEGMENT_N_DONE` | Segment N complete (e.g. `SEGMENT_1_DONE`) |
88
+
89
+ Do NOT invent status values. If you need review use `PENDING_REVIEW`. If you need help use `BLOCKED`.
90
+
91
+ ## When work is complete
92
+
93
+ When SENTINEL approves all segments and you're ready to finish:
94
+
95
+ 1. **Push the branch to remote:**
96
+ ```bash
97
+ git push -u origin forge-${SPRINTLESS_PAIR_ID}/${SPRINTLESS_TICKET_ID}
98
+ ```
99
+
100
+ NOTE: Direct `git push` is blocked. Instead, use the GitHub MCP tool:
101
+ - Get the current commit SHA
102
+ - Create a new branch reference on the remote
103
+
104
+ 2. **Create a Pull Request using GitHub MCP tool:**
105
+ - Use `create_pull_request` from the GitHub MCP server
106
+ - Set title: `[T-{id}] Brief description of the change`
107
+ - Set body: Use the PR description from `final-review.md`
108
+ - MUST include `Closes #<issue_number>` to auto-close the issue on merge
109
+ - Extract issue number from `SPRINTLESS_TICKET_ID`: `T-004` → `Closes #4`
110
+ - DO NOT use `Closes: T-004` (invalid - will not close the issue)
111
+ - Set head: `forge-${SPRINTLESS_PAIR_ID}/${SPRINTLESS_TICKET_ID}`
112
+ - Set base: `main`
113
+
114
+ 3. **Write STATUS.json with PR_OPENED:**
115
+ ```json
116
+ {
117
+ "status": "PR_OPENED",
118
+ "pair": "${SPRINTLESS_PAIR_ID}",
119
+ "ticket_id": "${SPRINTLESS_TICKET_ID}",
120
+ "branch": "forge-${SPRINTLESS_PAIR_ID}/${SPRINTLESS_TICKET_ID}",
121
+ "pr_url": "https://github.com/owner/repo/pull/42",
122
+ "pr_number": 42,
123
+ "files_changed": ["list", "of", "files"],
124
+ "segments_completed": N,
125
+ "timestamp": "2025-03-24T10:00:00Z"
126
+ }
127
+ ```
128
+
129
+ 4. **Exit** - The harness will detect STATUS.json and complete the lifecycle.
130
+
131
+ ## If you cannot create a PR
132
+
133
+ If you encounter issues pushing or creating a PR:
134
+
135
+ 1. Write STATUS.json with `BLOCKED` status:
136
+ ```json
137
+ {
138
+ "status": "BLOCKED",
139
+ "pair": "${SPRINTLESS_PAIR_ID}",
140
+ "ticket_id": "${SPRINTLESS_TICKET_ID}",
141
+ "branch": "forge-${SPRINTLESS_PAIR_ID}/${SPRINTLESS_TICKET_ID}",
142
+ "reason": "Could not push/create PR: <specific error>",
143
+ "blockers": [],
144
+ "files_changed": ["list", "of", "files"]
145
+ }
146
+ ```
147
+
148
+ 2. Exit - NEXUS will be alerted for human intervention.
149
+
150
+ ## Branch naming
151
+
152
+ Your branch is: `forge-${SPRINTLESS_PAIR_ID}/${SPRINTLESS_TICKET_ID}`
153
+
154
+ Example: `forge-pair-1/T-42`
155
+
156
+ ## Environment variables
157
+
158
+ - `SPRINTLESS_PAIR_ID` - your pair identifier (e.g., "pair-1")
159
+ - `SPRINTLESS_TICKET_ID` - the ticket you're working on (e.g., "T-42")
160
+ - `SPRINTLESS_WORKTREE` - your working directory
161
+ - `SPRINTLESS_SHARED` - the shared directory for FORGE-SENTINEL communication
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: frontend-design
3
+ description: Create distinctive, production-grade frontend interfaces with high design quality. Focuses on premium aesthetics and avoiding "AI slop".
4
+ ---
5
+
6
+ # FORGE Frontend Design Skill
7
+
8
+ Use this skill when tasked with building web components, pages, artifacts, or applications. Your goal is to create distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics.
9
+
10
+ ## Design Principles
11
+
12
+ - **Commit to BOLD Aesthetics**: Pick a clear conceptual direction (e.g., minimal, maximalist, retro-futuristic, etc.) and execute it with precision.
13
+ - **Memorable & Polished**: What is the one thing someone will remember? Ensure meticulous refinement in every detail.
14
+ - **Technical Excellence**: Framework compatibility, performance, and accessibility are baseline requirements.
15
+
16
+ ## Guidelines
17
+
18
+ - **Typography**: Pair a distinctive display font with a refined body font. Avoid Inter, Roboto, and Arial.
19
+ - **Color & Theme**: Use CSS variables for a cohesive theme. Choose accents that pop.
20
+ - **Motion**: Orchestrate high-impact animations. Use CSS transitions or library-specific motion (e.g., Framer Motion for React).
21
+ - **Composition**: Break the grid. Use asymmetry, negative space, and overlapping elements for depth.
22
+ - **Background Content**: Use meshes, noise, geometric patterns, or layered transparencies to create atmosphere.
23
+
24
+ ## What to Avoid
25
+
26
+ - Purple gradients on white backgrounds.
27
+ -系統 default font stacks.
28
+ - Predictive layouts and cookie-cutter component patterns.
29
+
30
+ MATCH implementation complexity to the aesthetic vision. Elegance comes from executing the vision well.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: mcp-builder
3
+ description: Comprehensive guide for developing and extending Model Context Protocol (MCP) servers.
4
+ ---
5
+
6
+ # FORGE MCP Builder Skill
7
+
8
+ Use this skill when you need to build or extend MCP servers to provide new capabilities to the AgentFlow system.
9
+
10
+ ## High-Level Workflow
11
+
12
+ ### Phase 1: Research and Planning
13
+
14
+ - Understand the external system or data source you are integrating.
15
+ - Define the necessary tools and resources.
16
+ - Choose the appropriate language/SDK (Rust, Python, Node.js).
17
+
18
+ ### Phase 2: Implementation
19
+
20
+ - Implement the core protocol (Tools, Resources, Prompts).
21
+ - Follow the official [MCP Specification](https://modelcontextprotocol.io/).
22
+ - Ensure robust error handling and type safety.
23
+
24
+ ### Phase 3: Review and Test
25
+
26
+ - Verify transport layers (Stdio, HTTP/SSE).
27
+ - Test tool execution and resource retrieval.
28
+ - Check for protocol compliance.
29
+
30
+ ### Phase 4: Integration
31
+
32
+ - Create evaluations and documentation.
33
+ - Add components to the `.claude-plugin/plugin.json` or `.mcp.json`.
34
+
35
+ ## Documentation Reference
36
+
37
+ Consult the official SDK documentation for the language you choose. Prioritize security and minimal permission sets when exposing system capabilities via tools.