New skills covering 10 categories: **Security & Audit**: 007 (STRIDE/PASTA/OWASP), cred-omega (secrets management) **AI Personas**: Karpathy, Hinton, Sutskever, LeCun (4 sub-skills), Altman, Musk, Gates, Jobs, Buffett **Multi-agent Orchestration**: agent-orchestrator, task-intelligence, multi-advisor **Code Analysis**: matematico-tao (Terence Tao-inspired mathematical code analysis) **Social & Messaging**: Instagram Graph API, Telegram Bot, WhatsApp Cloud API, social-orchestrator **Image Generation**: AI Studio (Gemini), Stability AI, ComfyUI Gateway, image-studio router **Brazilian Domain**: 6 auction specialist modules, 2 legal advisors, auctioneers data scraper **Product & Growth**: design, invention, monetization, analytics, growth engine **DevOps & LLM Ops**: Docker/CI-CD/AWS, RAG/embeddings/fine-tuning **Skill Governance**: installer, sentinel auditor, context management Each skill includes: - Standardized YAML frontmatter (name, description, risk, source, tags, tools) - Structured sections (Overview, When to Use, How it Works, Best Practices) - Python scripts and reference documentation where applicable - Cross-platform compatibility (Claude Code, Antigravity, Cursor, Gemini CLI, Codex CLI) Co-authored-by: ProgramadorBrasil <214873561+ProgramadorBrasil@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
119 lines
3.7 KiB
Python
119 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Setup a new WhatsApp Cloud API project with boilerplate code.
|
|
|
|
Usage:
|
|
python setup_project.py --language nodejs --path ./my-whatsapp-project
|
|
python setup_project.py --language python --path ./my-whatsapp-project
|
|
"""
|
|
|
|
import argparse
|
|
import os
|
|
import shutil
|
|
import sys
|
|
|
|
|
|
def get_skill_dir() -> str:
|
|
"""Get the skill directory (parent of scripts/)."""
|
|
return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
def setup_project(language: str, path: str, name: str | None = None) -> None:
|
|
"""Copy boilerplate and configure a new WhatsApp project."""
|
|
skill_dir = get_skill_dir()
|
|
boilerplate_dir = os.path.join(skill_dir, "assets", "boilerplate", language)
|
|
|
|
if not os.path.exists(boilerplate_dir):
|
|
print(f"Error: Boilerplate not found for language '{language}'")
|
|
print(f"Available: nodejs, python")
|
|
sys.exit(1)
|
|
|
|
target_path = os.path.abspath(path)
|
|
|
|
if os.path.exists(target_path) and os.listdir(target_path):
|
|
print(f"Warning: Directory '{target_path}' already exists and is not empty.")
|
|
response = input("Continue and overwrite? (y/N): ").strip().lower()
|
|
if response != "y":
|
|
print("Aborted.")
|
|
sys.exit(0)
|
|
|
|
# Copy boilerplate
|
|
print(f"Creating {language} project at: {target_path}")
|
|
shutil.copytree(boilerplate_dir, target_path, dirs_exist_ok=True)
|
|
|
|
# Rename .env.example to .env
|
|
env_example = os.path.join(target_path, ".env.example")
|
|
env_file = os.path.join(target_path, ".env")
|
|
if os.path.exists(env_example) and not os.path.exists(env_file):
|
|
shutil.copy2(env_example, env_file)
|
|
print("Created .env from .env.example")
|
|
|
|
# Update project name if provided
|
|
if name and language == "nodejs":
|
|
package_json = os.path.join(target_path, "package.json")
|
|
if os.path.exists(package_json):
|
|
with open(package_json, "r") as f:
|
|
content = f.read()
|
|
content = content.replace('"whatsapp-cloud-api"', f'"{name}"')
|
|
with open(package_json, "w") as f:
|
|
f.write(content)
|
|
|
|
print()
|
|
print("=" * 50)
|
|
print("Project created successfully!")
|
|
print("=" * 50)
|
|
print()
|
|
print("Next steps:")
|
|
print()
|
|
|
|
if language == "nodejs":
|
|
print(f" 1. cd {target_path}")
|
|
print(" 2. npm install")
|
|
print(" 3. Edit .env with your WhatsApp API credentials")
|
|
print(" 4. npm run dev")
|
|
print()
|
|
print("For production:")
|
|
print(" npm run build && npm start")
|
|
else:
|
|
print(f" 1. cd {target_path}")
|
|
print(" 2. pip install -r requirements.txt")
|
|
print(" 3. Edit .env with your WhatsApp API credentials")
|
|
print(" 4. python app.py")
|
|
print()
|
|
print("For production:")
|
|
print(" gunicorn -w 4 -b 0.0.0.0:3000 app:app")
|
|
|
|
print()
|
|
print("For local development with webhooks:")
|
|
print(" ngrok http 3000")
|
|
print(" Then configure the ngrok URL in Meta Developers > WhatsApp > Configuration")
|
|
print()
|
|
print("Need help with setup? Read: references/setup-guide.md")
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Setup a new WhatsApp Cloud API project")
|
|
parser.add_argument(
|
|
"--language",
|
|
choices=["nodejs", "python"],
|
|
required=True,
|
|
help="Project language (nodejs or python)",
|
|
)
|
|
parser.add_argument(
|
|
"--path",
|
|
required=True,
|
|
help="Path where the project will be created",
|
|
)
|
|
parser.add_argument(
|
|
"--name",
|
|
default=None,
|
|
help="Project name (optional, used in package.json for nodejs)",
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
setup_project(args.language, args.path, args.name)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|