Update framework configuration and clean up obsolete specs
Configuration updates: - Added .env.example template for environment variables - Updated README.md with better setup instructions (.env usage) - Enhanced .claude/settings.local.json with additional Bash permissions - Added .claude/CLAUDE.md framework documentation Spec cleanup: - Removed obsolete spec files (language_selection, mistral_extensible, template, theme_customization) - Consolidated app_spec.txt (Claude Clone example) - Added app_spec_model.txt as reference template - Added app_spec_library_rag_types_docs.txt - Added coding_prompt_library.md Framework improvements: - Updated agent.py, autonomous_agent_demo.py, client.py with minor fixes - Enhanced dockerize_my_project.py - Updated prompts (initializer, initializer_bis) with better guidance - Added docker-compose.my_project.yml example This commit consolidates improvements made during development sessions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
39
agent.py
39
agent.py
@@ -17,6 +17,7 @@ from prompts import (
|
||||
get_initializer_prompt,
|
||||
get_initializer_bis_prompt,
|
||||
get_coding_prompt,
|
||||
get_coding_prompt_library,
|
||||
copy_spec_to_project,
|
||||
copy_new_spec_to_project,
|
||||
)
|
||||
@@ -26,6 +27,34 @@ from prompts import (
|
||||
AUTO_CONTINUE_DELAY_SECONDS = 3
|
||||
|
||||
|
||||
def is_library_project(project_dir: Path) -> bool:
|
||||
"""
|
||||
Detect if this is a library/type-safety project vs a full-stack web app.
|
||||
|
||||
Checks app_spec.txt for keywords related to type safety, documentation, or library projects.
|
||||
"""
|
||||
app_spec_path = project_dir / "app_spec.txt"
|
||||
if not app_spec_path.exists():
|
||||
return False
|
||||
|
||||
try:
|
||||
spec_content = app_spec_path.read_text(encoding='utf-8').lower()
|
||||
|
||||
# Keywords that indicate a library/type-safety project
|
||||
library_keywords = [
|
||||
"type safety",
|
||||
"type annotations",
|
||||
"docstrings",
|
||||
"documentation enhancement",
|
||||
"mypy",
|
||||
"library rag",
|
||||
]
|
||||
|
||||
return any(keyword in spec_content for keyword in library_keywords)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
||||
async def run_agent_session(
|
||||
client: ClaudeSDKClient,
|
||||
message: str,
|
||||
@@ -162,8 +191,8 @@ async def run_autonomous_agent(
|
||||
print("Fresh start - will use initializer agent")
|
||||
print()
|
||||
print("=" * 70)
|
||||
print(" NOTE: First session takes 10-20+ minutes!")
|
||||
print(" The agent is creating 50 Linear issues and setting up the project.")
|
||||
print(" NOTE: First session may take several minutes!")
|
||||
print(" The agent is creating Linear issues (one per feature in spec).")
|
||||
print(" This may appear to hang - it's working. Watch for [Tool: ...] output.")
|
||||
print("=" * 70)
|
||||
print()
|
||||
@@ -213,7 +242,11 @@ async def run_autonomous_agent(
|
||||
prompt = get_initializer_bis_prompt()
|
||||
use_initializer_bis = False # Only use initializer bis once
|
||||
else:
|
||||
prompt = get_coding_prompt()
|
||||
# Detect project type and use appropriate coding prompt
|
||||
if is_library_project(project_dir):
|
||||
prompt = get_coding_prompt_library()
|
||||
else:
|
||||
prompt = get_coding_prompt()
|
||||
|
||||
# Run session with async context manager
|
||||
async with client:
|
||||
|
||||
Reference in New Issue
Block a user