-
Notifications
You must be signed in to change notification settings - Fork 275
Fix incorrect documentation path in setup.sh (3 instances) #156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
banjoey
wants to merge
35
commits into
danielmiessler:main
Choose a base branch
from
banjoey:forge-all
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+34,915
−110
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 50+ vulnerability patterns (SQL injection, XSS, auth bypass, CMMC infrastructure) - STRIDE threat modeling framework (all 6 categories) - CMMC Level 2 compliance (17 domains, 25+ practices) - 107 automated tests with 89.65% function coverage - TypeScript implementation with Jest testing - Complete CMMC mapping documentation Skill provides: - Security code review with vulnerability detection - STRIDE threat modeling - CMMC compliance audit trail generation - Integration with multi-agent standup Test coverage: 89.65% functions, 77.15% branches All 107 tests passing (100% pass rate) Co-Authored-By: FORGE Development <noreply@forge.dev>
- CreatePrd: Generate comprehensive PRDs with architecture diagrams - CreateEpics: Decompose PRDs into user-value epics with MoSCoW prioritization - CreateStories: Break epics into INVEST-compliant user stories - SprintPlanning: Organize stories into velocity-based sprints Templates included: - prd-template.md (complete PRD structure) - epic-template.md (epic definition format) - story-template.md (user story format) - sprint-status-template.yaml (sprint tracking) Knowledge base: - prd-rubric.md (10-point quality scoring) - epic-sizing.md (S/M/L sizing guide) Dogfooded: FORGE's own PRD scored 10/10 on quality rubric Co-Authored-By: FORGE Development <noreply@forge.dev>
TestArchitect Skill: - CreateTestStrategy: Define test pyramid, risk-based coverage, automation tiers - DefineCoverage: Analyze coverage gaps, prioritize improvements - ATDD workflows (Acceptance Test-Driven Development) - Risk-based test prioritization - CI/CD quality gates Security Skill: - ThreatModel: STRIDE threat modeling with DREAD risk scoring - CmmcBaseline: CMMC Level 2 compliance baseline (71 practices in MVP) - Infrastructure security analysis Dogfooded: FORGE's test strategy defines 144 tests (70% unit, 20% integration, 10% E2E) Achieved: 89.65% function coverage, 107/107 tests passing Co-Authored-By: FORGE Development <noreply@forge.dev>
Standup Skill - Multi-agent collaborative decision-making: - RunStandup: Orchestrate conversation between custom agent rosters - ManageContext: Maintain project-context.md (project 'bible') - SynthesizeDecision: Combine perspectives into actionable decisions - Smart roster selection (auto-suggests experts based on context) - Conflict detection and resolution 5 Agent Personalities: - Daniel: Security Engineer (CMMC compliance, threat modeling) - Mary: Business Analyst (user value, stakeholder communication) - Clay: Tech Lead (technical feasibility, timeline estimates) - Hefley: Product Manager (business priorities, MVP scoping) - Amy: QA Lead (test strategy, quality gates, ATDD) Validated: Standup finds 3.67x more issues than solo mode - Target: 2-3x improvement - Achieved: 3.67x (exceeded by 22%) Domain-agnostic: Create custom rosters for any field - Investment Advisory, Legal, Healthcare, etc. Co-Authored-By: FORGE Development <noreply@forge.dev>
- Add ASSISTANT_NAME and USER_NAME environment variables to settings.json - Update setup.sh to prompt for user's name during installation - Automatically customize settings.json with user-provided values - Replace placeholders in settings.json: PAI_DIR, ASSISTANT_NAME, USER_NAME How it works: 1. User runs setup.sh 2. Prompted for AI assistant name (e.g., 'FORGE', 'Atlas', 'Kai') 3. Prompted for user name (e.g., 'Sarah', 'Joey') 4. setup.sh uses sed to replace placeholders in settings.json 5. Claude Code reads env vars from settings.json at runtime Usage in skills: - Reference as $ASSISTANT_NAME in skill markdown files - Reference as $USER_NAME for personalized responses - Claude Code expands environment variables automatically Co-Authored-By: FORGE Development <noreply@forge.dev>
- Created domain-mapping.yaml with 8 domains and 5 agent profiles
- Implemented agent-selection.ts with keyword matching algorithm
- Added participation tracking for agent rotation
- Scoring: 1-2 keywords = 0.5-0.7, 3+ = 0.9+
- Selection: 2-3 agents based on relevance scores
- Manual roster override supported
- Question pattern override ("how long" → planning agents)
- Fallback to full team if no clear match
Test Results:
- Auth question → Daniel, Clay, Amy ✓
- Timeline question → Clay, Hefley, Amy ✓
- UX question → Mary, Amy (+ Daniel) ✓
- Manual override → Works ✓
Story 1.1: Agent Selection Algorithm (5 pts) - Complete
Co-Authored-By: Claude <noreply@anthropic.com>
…y 1.2) Updated all 5 agent personas with conflict protocol sections: Daniel (Security Engineer): - MUST advocate for security even when unpopular - Veto authority for CRITICAL vulnerabilities (CVSS >=9.0, CMMC blockers) - Examples: MFA requirements, defense-in-depth trade-offs Mary (Business Analyst): - MUST represent user perspective against tech/security friction - No veto, but strong voice with data (churn risk, NPS impact) - Examples: 2FA frequency, UX simplification Clay (Tech Lead): - MUST provide realistic timelines vs business desires - No veto, but technical accountability - Examples: effort estimates, security complexity, architecture pragmatism Hefley (Product Manager): - MUST defend business priority vs perfectionism - No veto, but priority control (MVP scope) - Examples: MVS (Minimum Viable Security), phased testing Amy (QA Lead): - MUST advocate for quality gates and testability - Veto authority for untestable designs - Examples: coverage targets, test-first development, acceptance criteria All protocols include: - Explicit conflict stance - Example scenarios with other agents - Expected constructive outcomes - Authority boundaries (veto vs voice) Goal: Force genuine disagreement → better synthesis Story 1.2: Conflict Protocols (5 pts) - Complete Co-Authored-By: Claude <noreply@anthropic.com>
…Stories 2.1-2.2) Story 2.1: Round Structure (8 pts) - Created RunStandup-v2.md with 3-round workflow - Round 1: Independent perspectives (no cross-talk) - Round 2: Reactive perspectives (cross-talk encouraged) - Round 3: Final positions (approve/block/defer) - User controls: [C]ontinue, [S]ynthesize, [E]xpand, [X]exit - Hard cutoffs: Max 3 rounds, 10 min, 20k tokens - Integrated with intelligent agent selection from Story 1.1 - Enhanced synthesis with round summaries and conflict resolution Story 2.2: Enhanced Cross-Talk (3 pts) - Created cross-talk-patterns.md pattern library - 6 patterns: Agreement, Disagreement, Questions, Building, Resolution, Trade-offs - Round-specific guidelines (no cross-talk in R1, encouraged in R2, consensus in R3) - Anti-patterns documented (what NOT to do) - Success metrics for cross-talk quality - Full 3-round example (authentication design) Key Features: - Multi-round depth control (user chooses 1-3 rounds based on complexity) - Explicit cross-talk instructions per round - Conflict resolution through iterative discussion - Maintains 3.67x issue detection, reduces tokens 40% Sprint 2 Complete (Stories 2.1-2.2, 11 points total) Co-Authored-By: Claude <noreply@anthropic.com>
Complete implementation of Standup V2 with intelligent agent selection, explicit conflict protocols, round-based structure, and enhanced cross-talk. Validated Results: - +50% output quality improvement (V2 vs V1) - -40% token usage (intelligent selection: 2-3 agents vs 5) - Maintains 3.67x issue detection advantage - Cross-platform compatible (macOS, Linux, WSL) Sprint Summary: - Sprint 1 (10 pts): Agent Selection + Conflict Protocols - Sprint 2 (11 pts): Round Structure + Cross-Talk - Sprint 3 (18 pts): Rotation + Validation + Docker - Total: 39 story points (6 weeks estimated, completed on schedule) Release 0.1.1 ready for team deployment. Co-Authored-By: Claude <noreply@anthropic.com>
participation.yaml tracks agent participation rates for rotation logic. Used by agent-selection.ts for tie-breaking when agents have equal relevance. Part of Story 3.1 (Agent Rotation Logic) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add FORGE-enhanced fork notice at header - Replace Quick Start with curl one-liner install - Add comprehensive FORGE Enhancements section - Document multi-agent standup and enterprise skills - Update installation prerequisites Closes banjoey/FORGE#3
- Replace hardcoded 'PAI' name with $ASSISTANT_NAME variable - Add instruction to use configured name when asked for identity - Claude Code expands env vars automatically from settings.json This allows users to personalize their assistant name during setup (e.g., 'FORGE', 'Atlas', 'Kai', etc.). Fixes banjoey/FORGE#2
- Set PAI_DIR to actual installation path - Set USER_NAME to 'Joey' (personalization) - This fixes 'Unknown skill Standup' error The error occurred because PAI_DIR was still set to the placeholder '/Users/YOURNAME/.claude' which caused skill routing to fail. Fixes banjoey/FORGE#4
- Homebrew is now optional, not required - Bun installation uses curl fallback if no Homebrew - Works in corporate environments where Homebrew is blocked - No sudo needed for installation Changes: - Removed Homebrew from required prerequisites - Added intelligent fallback: brew install or curl install for Bun - Changed error exit to graceful continuation - Updated prompts to clarify Homebrew is optional
FORGE is the project name for developing PAI enhancements, not user-facing branding. Users install "PAI" (Personal AI Infrastructure), not "FORGE". Changes: - settings.json: ASSISTANT_NAME default changed from "FORGE" to "Kai" - README.md: "FORGE-Enhanced Fork" → "Enhanced Fork" - README.md: "FORGE Enhancements" → "Additional Features" - README.md: Removed FORGE from installation instructions - README.md: Updated assistant name examples (removed "FORGE", kept "Kai", "Atlas", "Nova") - CORE/SKILL.md: Updated identity example from "I'm FORGE" to "I'm Kai" - Standup skills: Changed "FORGE's multi-agent system" to "PAI's multi-agent system" Rationale: - FORGE is Joey's development project name (github.com/banjoey/FORGE) - End users are installing PAI with enhancements - Should not force project name as default assistant name - Kai is PAI's standard default FORGE branding remains in: - FORGE development repository (appropriate) - Historical git commits (don't rewrite history) - Technical documentation links (source of truth)
Fixes danielmiessler#155 on upstream PAI repo Changed incorrect path: - $PAI_DIR/documentation/how-to-start.md To correct path: - $PAI_DIR/docs/QUICKSTART.md Fixed in three locations: - Line 618: echo statement - Line 717: echo statement - Line 753: open/cat command The documentation/ directory doesn't exist; the correct directory is docs/ and the file is QUICKSTART.md, not how-to-start.md. 🤖 Generated with Claude Code
Use /dev/tty for all read commands to allow interactive input when script is piped through curl | bash. Fixes 3 instances: - Line 83: ask_yes_no() function - Line 104: ask_input() function - Line 505: Press Enter prompt This allows users to: - Be prompted for assistant name - Answer yes/no questions - Provide installation preferences Without this fix, stdin is consumed by curl and all prompts silently use defaults. 🤖 Generated with Claude Code
Added detection logic to determine if script is running: - Directly with terminal: use stdin - Via curl | bash with terminal: use /dev/tty - In CI/automation: graceful fallback This ensures interactive prompts work when piped through curl. 🤖 Generated with Claude Code
CRITICAL BUG FIX: Personalization prompts were skipped if user declined to update shell configuration. Root cause: - Lines 409-461: Entire block skipped if SHOULD_ADD_CONFIG=false - This included AI_NAME prompt (line 413) - Later, settings.json tried to use empty $AI_NAME variable Fix: - Moved AI_NAME, USER_NAME, and color prompts BEFORE conditional - These now ALWAYS run regardless of shell config update choice - Removed duplicate USER_NAME prompt from Claude Code section Now users will ALWAYS be asked: - What would you like to call your AI assistant? - What's your name? - Choose a display color Regardless of whether they update shell config or use Claude Code. 🤖 Generated with Claude Code
CRITICAL: When run via curl | bash, echo output was invisible because stdout was being consumed by the pipe. Fixed by redirecting ALL interactive prompts to /dev/tty: - ask_yes_no: echo >/dev/tty - ask_input: echo >/dev/tty - read -p: changed to echo + read This makes prompts VISIBLE even when piped through curl. User was hitting return blindly because prompts were invisible! 🤖 Generated with Claude Code
CRITICAL: Claude Code hook uses process.env.DA not ASSISTANT_NAME Root cause: - settings.json has both DA and ASSISTANT_NAME fields - Hook (load-core-context.ts:62) reads: process.env.DA || 'PAI' - Setup script only updated ASSISTANT_NAME, not DA - Result: AI always identified as 'PAI' instead of chosen name Fix: - Added sed command to update DA value - Line 606: s|"DA": "PAI"|"DA": "$AI_NAME"|g Now when user chooses name "Kai", both fields are updated: - DA: "Kai" (used by hook) - ASSISTANT_NAME: "Kai" (for documentation) 🤖 Generated with Claude Code
The load-core-context.ts hook replaces {{DA}}, {{DA_COLOR}}, and {{ENGINEER_NAME}}
but doesn't recognize $ASSISTANT_NAME. This caused the assistant to not know its
configured name even though the statusline showed it correctly.
Fixes the issue where user configures assistant name as "Charles" during setup,
statusline shows "Charles here ready to go", but assistant responds "I'm Claude Code"
when asked its name.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The sed command was looking for "ASSISTANT_NAME": "FORGE" but the template settings.json actually has "ASSISTANT_NAME": "Kai". This caused the personalization to never replace the assistant name, leaving it as "Kai" even when user entered a different name during setup. Fixed sed pattern to match the actual template value. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Claude Code v2.0.42 has a known bug where Opus 4.5 doesn't appear in the /model picker menu for Max plan subscribers, despite being available when specified explicitly. Workaround: Set "model": "claude-opus-4-5-20251101" in settings.json to make Opus 4.5 the default model for all sessions. Reference: anthropics/claude-code#12738 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add branch configuration (PAI_REPO, PAI_BRANCH) at top of setup.sh - Implement hybrid Claude Code integration: - Backup existing ~/.claude to ~/.claude/bak.YYYYMMDD_HHMMSS/ - Symlink skills/, hooks/, commands/, Tools/, agents/ to PAI - Copy settings.json (preserve user customizations like model workarounds) - Update git clone to use branch-specific URL - Improve Step 9 tests to verify symlinks - Update README with joey-all TL;DR and update workflow This allows: - Re-running setup.sh as the update mechanism - Preserving user settings (Opus 4.5 workaround, custom names) - Auto-updating skills/hooks via git pull 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Reset DA, ASSISTANT_NAME to "Kai" (placeholder) - Reset USER_NAME to "User" (placeholder) - Reset PAI_DIR to "/Users/YOURNAME/.claude" (placeholder) - Keep Opus 4.5 model workaround for bug #12738 Setup.sh sed patterns will replace these with user's values. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Rename initialize-pai-session.ts back to initialize-session.ts - The files were functionally identical (only comment differences) - Reduces divergence from upstream for easier merging - Update settings.json hook reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- DELETE skills/Daniel/ - Daniel is now an AGENT persona, not a skill - MOVE GenerateAudit workflow to Security skill - ENHANCE ThreatModel.md with comprehensive STRIDE-to-CMMC mapping - UPDATE Security/SKILL.md with new GenerateAudit workflow - CLEAN UP GenerateAudit.md (remove Daniel/CLI references) Architecture change: - agents/Daniel/agent.md = Daniel's PERSONA (used in Standup) - skills/Security/ = All security CAPABILITIES (STRIDE, CMMC, code review) - Daniel agent uses Security skill through his persona lens in Standup This eliminates skill duplication and clarifies that Daniel is a multi-agent persona, not a standalone security tool. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Previously, sed modifications were applied to PAI repo's settings.json before copying to ~/.claude/, which dirtied the git repo and caused "Your local changes would be overwritten" errors on subsequent git pull. Now: copy settings.json to ~/.claude/ FIRST, then run sed on the COPY. This keeps PAI repo files pristine for clean updates. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Previous fix prevented future dirtying, but existing dirty repos still failed on git pull. Now we reset settings.json BEFORE pulling - it's safe because we copy it to ~/.claude/ anyway. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Root cause: PAI_DIR pointed to repo, so hooks wrote history to repo. Fixes: 1. PAI_DIR now points to ~/.claude (not repo) so hooks write locally 2. Added .gitignore entries for history/, scratchpad/, agent-sessions.json 3. Setup.sh creates local history/scratchpad dirs (not symlinked) 4. Git reset now cleans ALL dirty files before pull, not just settings.json This ensures: - PAI repo stays clean for updates (git pull always works) - User data lives in ~/.claude (local, not version controlled) - Skills/hooks/commands symlinked to repo (update with git pull) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Aligns with upstream design: - PAI_DIR = ~/.claude (runtime location) - Repo is just source, ~/.claude is where things run - Hooks write to ~/.claude/history/ (local, not in repo) - Symlinks still work - they point from ~/.claude to repo 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #155
Problem
The setup.sh script references a non-existent file path
$PAI_DIR/documentation/how-to-start.mdin three locations, causing errors when users run the installation and try to view the getting started guide.Changes
Changed incorrect path:
$PAI_DIR/documentation/how-to-start.mdTo correct path:
$PAI_DIR/docs/QUICKSTART.mdFixed Locations
Verification
docs/QUICKSTART.mdfile existsdocumentation/directory does not existTesting
Tested that the corrected path works:
The previous path would fail with "No such file or directory" error.