Skip to content

feat: stage-aware soul templates with pipeline.startStage#4

Merged
Zhang-Henry merged 1 commit intomainfrom
feat/stage-aware-soul-templates
Feb 28, 2026
Merged

feat: stage-aware soul templates with pipeline.startStage#4
Zhang-Henry merged 1 commit intomainfrom
feat/stage-aware-soul-templates

Conversation

@liuyixin-louis
Copy link
Copy Markdown
Collaborator

Summary

  • All three soul templates (CLAUDE.md, AGENTS.md, cursor-project.md) now support pipeline.startStage so users can enter the pipeline at any stage (ideation/experiment/publication) instead of always starting from ideation
  • inno-pipeline-planner is now properly referenced in all templates with 4 trigger conditions: no brief, no tasks, stage change, or explicit user request
  • taskmaster.js respects startStage during task generation, skipping earlier stages
  • Brief schema and generation rules updated with startStage field and stage-filtering logic

Test plan

  • Create a new workspace project → verify CLAUDE.md/AGENTS.md include stage-aware instructions
  • Open chat with no research_brief.json → agent should proactively offer inno-pipeline-planner
  • Tell agent "I already have experimental results, I just need to write the paper" → planner sets startStage: "publication", only publication tasks generated
  • Tell agent "I have an idea, I need to run experiments" → planner sets startStage: "experiment", experiment + publication tasks generated
  • Full idea-to-paper flow still works unchanged (startStage defaults to "ideation")

🤖 Generated with Claude Code

Users can now start the research pipeline from any stage (ideation,
experiment, or publication) instead of always going through the full
idea-to-paper flow. The inno-pipeline-planner is now properly triggered
across all three soul templates (CLAUDE.md, AGENTS.md, cursor-project.md).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Zhang-Henry Zhang-Henry merged commit 70015d1 into main Feb 28, 2026
1 check passed
bbsngg added a commit that referenced this pull request Mar 24, 2026
- Cache resolved Claude command in mcp.js with 30s TTL to avoid
  redundant probe spawns on rapid MCP requests (point #1)
- Remove || 'claude' fallback in resolveClaudeCommand(); return 503
  with clear error when CLI is not found (point #2)
- Simplify error handler in checkClaudeCredentials() since the command
  was already validated by resolveAvailableCliCommand (point #3)
- Keep diff minimal with no whitespace-only changes (point #4)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Zhang-Henry added a commit that referenced this pull request Apr 8, 2026
Critical:
- #1 Shell escape API key values in community-tools.env export
- #2 Replace ComputeNode.exec() with ComputeNode.run() (correct method)

High:
- #3 Add path traversal validation in status endpoint
- #4 Sanitize SSH user/host to prevent shell injection
- #5 Use i18n key for "Auto Research" sidebar button
- #6 Add Auto Research button to mobile sidebar
- #10 Stop leaking error.message to clients in 500 responses
bbsngg pushed a commit that referenced this pull request Apr 8, 2026
Critical:
- #1 Shell escape API key values in community-tools.env export
- #2 Replace ComputeNode.exec() with ComputeNode.run() (correct method)

High:
- #3 Add path traversal validation in status endpoint
- #4 Sanitize SSH user/host to prevent shell injection
- #5 Use i18n key for "Auto Research" sidebar button
- #6 Add Auto Research button to mobile sidebar
- #10 Stop leaking error.message to clients in 500 responses
HenryPengZou added a commit to HenryPengZou/dr-claw that referenced this pull request Apr 8, 2026
…r fixes

Fixes for PR OpenLAIR#146 review by @Zhang-Henry:

Critical:
- OpenLAIR#1: memory_enabled is now per-user (column on users table) instead of
  global app_settings. Each user controls their own memory toggle.
- OpenLAIR#2: ~/.claude/MEMORY.md namespaced as MEMORY-{userId}.md to prevent
  multi-user overwrites on shared servers.

High:
- OpenLAIR#3: req.params.id validated as positive integer with parseInt + isNaN guard
- OpenLAIR#4: Memory content sanitized (strip markdown headings) before prompt injection;
  content length capped at 500 chars; max 50 memories per user
- OpenLAIR#5: Content length validation (400 error) on create and update routes
- OpenLAIR#6: Delete now requires window.confirm() before executing

Medium:
- OpenLAIR#8: Removed no-op try/catch wrappers from all memoryDb methods
- OpenLAIR#9: Added comment explaining why Gemini injects memory into user prompt
  (CLI has no system instruction API)
- OpenLAIR#10: Changed index from (is_enabled) to composite (user_id, is_enabled)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants