specsmith 0.12.0.dev496__tar.gz → 0.12.0.dev498__tar.gz
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.
- {specsmith-0.12.0.dev496/src/specsmith.egg-info → specsmith-0.12.0.dev498}/PKG-INFO +46 -9
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/README.md +45 -8
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/pyproject.toml +1 -1
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/auditor.py +19 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/config.py +66 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/importer.py +66 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/scaffolder.py +169 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/__init__.py +17 -0
- specsmith-0.12.0.dev498/src/specsmith/skills/ai_agents.py +1439 -0
- specsmith-0.12.0.dev498/src/specsmith/skills/data_engineering.py +960 -0
- specsmith-0.12.0.dev498/src/specsmith/skills/platform_engineering.py +1391 -0
- specsmith-0.12.0.dev498/src/specsmith/skills/software_engineering.py +1291 -0
- specsmith-0.12.0.dev498/src/specsmith/skills/web_backend.py +1427 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/tools.py +123 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498/src/specsmith.egg-info}/PKG-INFO +46 -9
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith.egg-info/SOURCES.txt +5 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/LICENSE +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/setup.cfg +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/belief.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/certainty.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/py.typed +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/recovery.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/session.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/epistemic/trace.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/__main__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/architect.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/auth.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/block_export.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/channel.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/cli.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/compressor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/context_window.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/credits.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/differ.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/doctor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/drive.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/editor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/executor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/exporter.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/governance_logic.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/history_search.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/instinct.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/languages.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/ledger.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/mcp_server.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/patent.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/paths.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/phase.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/plugins.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/profiles.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/releaser.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/requirements.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/serve.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/session.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/session_init.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/session_store.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/specsmith_skills.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/sync.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/trace.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/updater.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/validator.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith/workspace.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_CMD_001.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_ai_client.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_auditor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_channel.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_cli.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_compliance.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_compressor.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_dispatch.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_epistemic.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_importer.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_integrations.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_intelligence.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_mcp_client.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_mcp_server.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_new_modules.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_nexus.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_permissions.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_rate_limits.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_req_248_262.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_req_358_359.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_scaffolder.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_smoke.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_suggester.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_tools.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_validator.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_vcs.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_warp_parity.py +0 -0
- {specsmith-0.12.0.dev496 → specsmith-0.12.0.dev498}/tests/test_warp_parity_followup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.12.0.
|
|
3
|
+
Version: 0.12.0.dev498
|
|
4
4
|
Summary: Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands.
|
|
5
5
|
Author: BitConcepts
|
|
6
6
|
License-Expression: MIT
|
|
@@ -87,7 +87,7 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
87
87
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
88
88
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
89
89
|
|
|
90
|
-
**v0.12.0 — Native Warp/Oz MCP governance server,
|
|
90
|
+
**v0.12.0 — Native Warp/Oz MCP governance server, 131 built-in skills across 16 domains, 53 project types, EU AI Act / NIST AI RMF compliance, multi-agent DAG dispatch, and context window management.**
|
|
91
91
|
Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
|
|
92
92
|
and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
|
|
93
93
|
every AI-generated output is disclosed, context windows are GPU-aware and protected against
|
|
@@ -862,17 +862,33 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
862
862
|
|
|
863
863
|
---
|
|
864
864
|
|
|
865
|
-
##
|
|
865
|
+
## 53 Project Types
|
|
866
866
|
|
|
867
|
-
**
|
|
867
|
+
**Python:** `cli-python`, `library-python`, `backend-frontend`, `backend-frontend-tray`, `embedded-python-hmi`, `research-python`.
|
|
868
868
|
|
|
869
|
-
**
|
|
869
|
+
**Systems languages:** `cli-rust`, `library-rust`, `cli-go`, `cli-c`, `library-c`, `dotnet-app`.
|
|
870
870
|
|
|
871
|
-
**
|
|
871
|
+
**Modern web:** `web-frontend`, `fullstack-js`, `nextjs-app`, `nuxt-app`, `sveltekit-app`, `remix-app`, `astro-site`.
|
|
872
872
|
|
|
873
|
-
**
|
|
873
|
+
**AI / Agents:** `llm-app`, `agent-orchestration`, `mcp-server`, `rag-pipeline`, `mlops-platform`.
|
|
874
874
|
|
|
875
|
-
**
|
|
875
|
+
**JVM:** `java-spring`, `java-library`.
|
|
876
|
+
|
|
877
|
+
**Mobile:** `mobile-app`.
|
|
878
|
+
|
|
879
|
+
**Infrastructure:** `serverless`, `kubernetes-operator`, `microservices`, `devops-iac`, `streaming-pipeline`, `data-warehouse`, `data-ml`.
|
|
880
|
+
|
|
881
|
+
**Game development:** `game-unity`, `game-godot`.
|
|
882
|
+
|
|
883
|
+
**Web3:** `smart-contract`.
|
|
884
|
+
|
|
885
|
+
**Desktop:** `desktop-electron`, `desktop-tauri`.
|
|
886
|
+
|
|
887
|
+
**Hardware / Embedded:** `fpga-rtl`, `fpga-rtl-amd`, `fpga-rtl-intel`, `fpga-rtl-lattice`, `mixed-fpga-embedded`, `mixed-fpga-firmware`, `yocto-bsp`, `embedded-hardware`, `pcb-hardware`, `safety-critical`.
|
|
888
|
+
|
|
889
|
+
**Documents & IP:** `spec-document`, `user-manual`, `research-paper`, `research-python`, `api-specification`, `requirements-mgmt`, `patent-application`, `patent-prosecution`.
|
|
890
|
+
|
|
891
|
+
**Business / Legal / AEE:** `business-plan`, `legal-compliance`, `monorepo`, `browser-extension`, `epistemic-pipeline`, `knowledge-engineering`, `aee-research`.
|
|
876
892
|
|
|
877
893
|
---
|
|
878
894
|
|
|
@@ -959,7 +975,7 @@ See the `codity-ai-review` governance skill (`specsmith skill install codity-ai-
|
|
|
959
975
|
|
|
960
976
|
## Skills
|
|
961
977
|
|
|
962
|
-
specsmith ships **
|
|
978
|
+
specsmith ships **131 built-in skills** across 16 domains that AI agents (Warp, Claude Code, Codex, Cursor) can install and use.
|
|
963
979
|
|
|
964
980
|
```bash
|
|
965
981
|
# List all available skills
|
|
@@ -976,6 +992,27 @@ specsmith skill install specsmith-audit
|
|
|
976
992
|
|
|
977
993
|
Skills are installed as `.agents/skills/<slug>/SKILL.md` and are auto-discovered by any AI tool that scans `.agents/skills/`.
|
|
978
994
|
|
|
995
|
+
### Skill domains
|
|
996
|
+
|
|
997
|
+
| Domain | Count | Coverage |
|
|
998
|
+
|--------|-------|----------|
|
|
999
|
+
| `governance` | 14 | AEE workflows, verification, release, CI polling, patent prosecution |
|
|
1000
|
+
| `ai-agents` | 14 | LLM apps, MCP servers, agent orchestration, RAG, prompt engineering, fine-tuning, MLOps |
|
|
1001
|
+
| `software-engineering` | 12 | Code review, TDD, debugging, security hardening, API design, ADRs |
|
|
1002
|
+
| `web-backend` | 11 | Frontend UI, Next.js, REST/GraphQL, PostgreSQL, Redis, WebSockets |
|
|
1003
|
+
| `platform-engineering` | 10 | Helm, observability, GitOps, secrets, OAuth2, chaos engineering |
|
|
1004
|
+
| `embedded` | 10 | Zephyr, Yocto, FreeRTOS, NuttX, Buildroot, Azure RTOS |
|
|
1005
|
+
| `docs` | 10 | MkDocs, Sphinx, Doxygen, JSDoc, OpenAPI, mdBook |
|
|
1006
|
+
| `data-engineering` | 8 | ETL/ELT, dbt, Spark, data quality, feature stores, Delta Lake |
|
|
1007
|
+
| `hardware` | 9 | KiCad, Altium, Vivado, Quartus, GTKWave, JTAG |
|
|
1008
|
+
| `corporate` | 7 | Budgets, fundraising, marketing, HR, legal |
|
|
1009
|
+
| `devops` | 6 | Docker, Kubernetes, Terraform, GitHub Actions |
|
|
1010
|
+
| `cloud` | 4 | AWS, Azure, GCP, GitHub CLI |
|
|
1011
|
+
| `mobile` | 4 | iOS, Android, Flutter, React Native |
|
|
1012
|
+
| `ssh` | 3 | SSH, WSL2, remote dev |
|
|
1013
|
+
| `cross-platform` | 3 | CMake, package managers, terminal awareness |
|
|
1014
|
+
| `productivity` | 3 | Email, presentations, MS Office |
|
|
1015
|
+
|
|
979
1016
|
### Self-referential governance skills
|
|
980
1017
|
|
|
981
1018
|
Three skills document specsmith itself:
|
|
@@ -15,7 +15,7 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
15
15
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
16
16
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
17
17
|
|
|
18
|
-
**v0.12.0 — Native Warp/Oz MCP governance server,
|
|
18
|
+
**v0.12.0 — Native Warp/Oz MCP governance server, 131 built-in skills across 16 domains, 53 project types, EU AI Act / NIST AI RMF compliance, multi-agent DAG dispatch, and context window management.**
|
|
19
19
|
Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
|
|
20
20
|
and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
|
|
21
21
|
every AI-generated output is disclosed, context windows are GPU-aware and protected against
|
|
@@ -790,17 +790,33 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
790
790
|
|
|
791
791
|
---
|
|
792
792
|
|
|
793
|
-
##
|
|
793
|
+
## 53 Project Types
|
|
794
794
|
|
|
795
|
-
**
|
|
795
|
+
**Python:** `cli-python`, `library-python`, `backend-frontend`, `backend-frontend-tray`, `embedded-python-hmi`, `research-python`.
|
|
796
796
|
|
|
797
|
-
**
|
|
797
|
+
**Systems languages:** `cli-rust`, `library-rust`, `cli-go`, `cli-c`, `library-c`, `dotnet-app`.
|
|
798
798
|
|
|
799
|
-
**
|
|
799
|
+
**Modern web:** `web-frontend`, `fullstack-js`, `nextjs-app`, `nuxt-app`, `sveltekit-app`, `remix-app`, `astro-site`.
|
|
800
800
|
|
|
801
|
-
**
|
|
801
|
+
**AI / Agents:** `llm-app`, `agent-orchestration`, `mcp-server`, `rag-pipeline`, `mlops-platform`.
|
|
802
802
|
|
|
803
|
-
**
|
|
803
|
+
**JVM:** `java-spring`, `java-library`.
|
|
804
|
+
|
|
805
|
+
**Mobile:** `mobile-app`.
|
|
806
|
+
|
|
807
|
+
**Infrastructure:** `serverless`, `kubernetes-operator`, `microservices`, `devops-iac`, `streaming-pipeline`, `data-warehouse`, `data-ml`.
|
|
808
|
+
|
|
809
|
+
**Game development:** `game-unity`, `game-godot`.
|
|
810
|
+
|
|
811
|
+
**Web3:** `smart-contract`.
|
|
812
|
+
|
|
813
|
+
**Desktop:** `desktop-electron`, `desktop-tauri`.
|
|
814
|
+
|
|
815
|
+
**Hardware / Embedded:** `fpga-rtl`, `fpga-rtl-amd`, `fpga-rtl-intel`, `fpga-rtl-lattice`, `mixed-fpga-embedded`, `mixed-fpga-firmware`, `yocto-bsp`, `embedded-hardware`, `pcb-hardware`, `safety-critical`.
|
|
816
|
+
|
|
817
|
+
**Documents & IP:** `spec-document`, `user-manual`, `research-paper`, `research-python`, `api-specification`, `requirements-mgmt`, `patent-application`, `patent-prosecution`.
|
|
818
|
+
|
|
819
|
+
**Business / Legal / AEE:** `business-plan`, `legal-compliance`, `monorepo`, `browser-extension`, `epistemic-pipeline`, `knowledge-engineering`, `aee-research`.
|
|
804
820
|
|
|
805
821
|
---
|
|
806
822
|
|
|
@@ -887,7 +903,7 @@ See the `codity-ai-review` governance skill (`specsmith skill install codity-ai-
|
|
|
887
903
|
|
|
888
904
|
## Skills
|
|
889
905
|
|
|
890
|
-
specsmith ships **
|
|
906
|
+
specsmith ships **131 built-in skills** across 16 domains that AI agents (Warp, Claude Code, Codex, Cursor) can install and use.
|
|
891
907
|
|
|
892
908
|
```bash
|
|
893
909
|
# List all available skills
|
|
@@ -904,6 +920,27 @@ specsmith skill install specsmith-audit
|
|
|
904
920
|
|
|
905
921
|
Skills are installed as `.agents/skills/<slug>/SKILL.md` and are auto-discovered by any AI tool that scans `.agents/skills/`.
|
|
906
922
|
|
|
923
|
+
### Skill domains
|
|
924
|
+
|
|
925
|
+
| Domain | Count | Coverage |
|
|
926
|
+
|--------|-------|----------|
|
|
927
|
+
| `governance` | 14 | AEE workflows, verification, release, CI polling, patent prosecution |
|
|
928
|
+
| `ai-agents` | 14 | LLM apps, MCP servers, agent orchestration, RAG, prompt engineering, fine-tuning, MLOps |
|
|
929
|
+
| `software-engineering` | 12 | Code review, TDD, debugging, security hardening, API design, ADRs |
|
|
930
|
+
| `web-backend` | 11 | Frontend UI, Next.js, REST/GraphQL, PostgreSQL, Redis, WebSockets |
|
|
931
|
+
| `platform-engineering` | 10 | Helm, observability, GitOps, secrets, OAuth2, chaos engineering |
|
|
932
|
+
| `embedded` | 10 | Zephyr, Yocto, FreeRTOS, NuttX, Buildroot, Azure RTOS |
|
|
933
|
+
| `docs` | 10 | MkDocs, Sphinx, Doxygen, JSDoc, OpenAPI, mdBook |
|
|
934
|
+
| `data-engineering` | 8 | ETL/ELT, dbt, Spark, data quality, feature stores, Delta Lake |
|
|
935
|
+
| `hardware` | 9 | KiCad, Altium, Vivado, Quartus, GTKWave, JTAG |
|
|
936
|
+
| `corporate` | 7 | Budgets, fundraising, marketing, HR, legal |
|
|
937
|
+
| `devops` | 6 | Docker, Kubernetes, Terraform, GitHub Actions |
|
|
938
|
+
| `cloud` | 4 | AWS, Azure, GCP, GitHub CLI |
|
|
939
|
+
| `mobile` | 4 | iOS, Android, Flutter, React Native |
|
|
940
|
+
| `ssh` | 3 | SSH, WSL2, remote dev |
|
|
941
|
+
| `cross-platform` | 3 | CMake, package managers, terminal awareness |
|
|
942
|
+
| `productivity` | 3 | Email, presentations, MS Office |
|
|
943
|
+
|
|
907
944
|
### Self-referential governance skills
|
|
908
945
|
|
|
909
946
|
Three skills document specsmith itself:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.12.0.
|
|
7
|
+
version = "0.12.0.dev498"
|
|
8
8
|
description = "Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -724,6 +724,8 @@ def check_tool_configuration(root: Path) -> list[AuditResult]:
|
|
|
724
724
|
# mismatch. See GitHub issue #194.
|
|
725
725
|
_EXPLICIT_ONLY_TYPES: frozenset[str] = frozenset(
|
|
726
726
|
[
|
|
727
|
+
# Hardware / vendor-specific types that cannot be auto-detected from
|
|
728
|
+
# file extensions (Python/C tooling dominates file counts).
|
|
727
729
|
"fpga-rtl",
|
|
728
730
|
"fpga-rtl-amd",
|
|
729
731
|
"fpga-rtl-intel",
|
|
@@ -733,6 +735,23 @@ _EXPLICIT_ONLY_TYPES: frozenset[str] = frozenset(
|
|
|
733
735
|
"embedded-hardware",
|
|
734
736
|
"pcb-hardware",
|
|
735
737
|
"yocto-bsp",
|
|
738
|
+
# Infrastructure types where auxiliary Python/JS glue code dominates
|
|
739
|
+
# and a generic detection pass would misclassify the primary type.
|
|
740
|
+
"kubernetes-operator",
|
|
741
|
+
"streaming-pipeline",
|
|
742
|
+
"serverless",
|
|
743
|
+
# AI / agent types: an LLM app is indistinguishable from a regular
|
|
744
|
+
# Python library unless dependency signals are present. Suppress
|
|
745
|
+
# false-positive mismatches when the type is set explicitly.
|
|
746
|
+
"agent-orchestration",
|
|
747
|
+
"mcp-server",
|
|
748
|
+
"rag-pipeline",
|
|
749
|
+
"mlops-platform",
|
|
750
|
+
# Game engines: Unity / Godot projects often have Python tooling alongside.
|
|
751
|
+
"game-unity",
|
|
752
|
+
"game-godot",
|
|
753
|
+
# Data warehouse: dbt + SQL projects have no primary-language file bias.
|
|
754
|
+
"data-warehouse",
|
|
736
755
|
]
|
|
737
756
|
)
|
|
738
757
|
|
|
@@ -74,6 +74,28 @@ class ProjectType(str, Enum):
|
|
|
74
74
|
SVELTEKIT_APP = "sveltekit-app" # SvelteKit app
|
|
75
75
|
REMIX_APP = "remix-app" # Remix full-stack React app
|
|
76
76
|
ASTRO_SITE = "astro-site" # Astro static/SSR site
|
|
77
|
+
# AI / LLM / Agents
|
|
78
|
+
LLM_APP = "llm-app" # LLM-powered app (LangChain / LlamaIndex / custom SDK)
|
|
79
|
+
AGENT_ORCHESTRATION = "agent-orchestration" # Multi-agent system (AutoGen/CrewAI/LangGraph)
|
|
80
|
+
MCP_SERVER = "mcp-server" # Model Context Protocol server
|
|
81
|
+
RAG_PIPELINE = "rag-pipeline" # RAG + embedding pipeline
|
|
82
|
+
MLOPS_PLATFORM = "mlops-platform" # MLOps platform (MLflow / BentoML / Ray Serve)
|
|
83
|
+
# JVM
|
|
84
|
+
JAVA_SPRING = "java-spring" # Spring Boot application
|
|
85
|
+
JAVA_LIBRARY = "java-library" # Java library / SDK
|
|
86
|
+
# Cloud / Infrastructure
|
|
87
|
+
SERVERLESS = "serverless" # FaaS (Lambda / GCP Functions / Cloudflare Workers)
|
|
88
|
+
KUBERNETES_OPERATOR = "kubernetes-operator" # K8s controller / operator
|
|
89
|
+
STREAMING_PIPELINE = "streaming-pipeline" # Kafka / Flink / Beam / Spark Streaming
|
|
90
|
+
DATA_WAREHOUSE = "data-warehouse" # dbt / Snowflake / BigQuery / Redshift
|
|
91
|
+
# Game development
|
|
92
|
+
GAME_UNITY = "game-unity" # Unity game project
|
|
93
|
+
GAME_GODOT = "game-godot" # Godot game project
|
|
94
|
+
# Web3 / blockchain
|
|
95
|
+
SMART_CONTRACT = "smart-contract" # Solidity / EVM smart contracts
|
|
96
|
+
# Desktop
|
|
97
|
+
DESKTOP_ELECTRON = "desktop-electron" # Electron desktop app
|
|
98
|
+
DESKTOP_TAURI = "desktop-tauri" # Tauri desktop app (Rust + WebView)
|
|
77
99
|
|
|
78
100
|
|
|
79
101
|
class Platform(str, Enum):
|
|
@@ -548,6 +570,28 @@ _TYPE_LABELS: dict[str, str] = {
|
|
|
548
570
|
ProjectType.SVELTEKIT_APP: "SvelteKit application",
|
|
549
571
|
ProjectType.REMIX_APP: "Remix application (React + full-stack)",
|
|
550
572
|
ProjectType.ASTRO_SITE: "Astro site (static / SSR)",
|
|
573
|
+
# AI / LLM / Agents
|
|
574
|
+
ProjectType.LLM_APP: "LLM-powered application (LangChain / LlamaIndex / custom)",
|
|
575
|
+
ProjectType.AGENT_ORCHESTRATION: "Multi-agent orchestration (AutoGen / CrewAI / LangGraph)",
|
|
576
|
+
ProjectType.MCP_SERVER: "MCP server (Model Context Protocol)",
|
|
577
|
+
ProjectType.RAG_PIPELINE: "RAG / embedding pipeline",
|
|
578
|
+
ProjectType.MLOPS_PLATFORM: "MLOps platform (MLflow / BentoML / Ray Serve)",
|
|
579
|
+
# JVM
|
|
580
|
+
ProjectType.JAVA_SPRING: "Java Spring Boot application",
|
|
581
|
+
ProjectType.JAVA_LIBRARY: "Java library / SDK",
|
|
582
|
+
# Cloud / Infrastructure
|
|
583
|
+
ProjectType.SERVERLESS: "Serverless / FaaS (Lambda / GCP Functions / Cloudflare Workers)",
|
|
584
|
+
ProjectType.KUBERNETES_OPERATOR: "Kubernetes operator / controller",
|
|
585
|
+
ProjectType.STREAMING_PIPELINE: "Streaming data pipeline (Kafka / Flink / Beam)",
|
|
586
|
+
ProjectType.DATA_WAREHOUSE: "Data warehouse (dbt / Snowflake / BigQuery)",
|
|
587
|
+
# Game development
|
|
588
|
+
ProjectType.GAME_UNITY: "Game (Unity)",
|
|
589
|
+
ProjectType.GAME_GODOT: "Game (Godot)",
|
|
590
|
+
# Web3
|
|
591
|
+
ProjectType.SMART_CONTRACT: "Smart contract (Solidity / EVM)",
|
|
592
|
+
# Desktop
|
|
593
|
+
ProjectType.DESKTOP_ELECTRON: "Desktop application (Electron)",
|
|
594
|
+
ProjectType.DESKTOP_TAURI: "Desktop application (Tauri — Rust + WebView)",
|
|
551
595
|
}
|
|
552
596
|
|
|
553
597
|
_SECTION_REFS: dict[str, str] = {
|
|
@@ -584,4 +628,26 @@ _SECTION_REFS: dict[str, str] = {
|
|
|
584
628
|
ProjectType.EPISTEMIC_PIPELINE: "17.31",
|
|
585
629
|
ProjectType.KNOWLEDGE_ENGINEERING: "17.32",
|
|
586
630
|
ProjectType.AEE_RESEARCH: "17.33",
|
|
631
|
+
# AI / LLM / Agents
|
|
632
|
+
ProjectType.LLM_APP: "17.34",
|
|
633
|
+
ProjectType.AGENT_ORCHESTRATION: "17.35",
|
|
634
|
+
ProjectType.MCP_SERVER: "17.36",
|
|
635
|
+
ProjectType.RAG_PIPELINE: "17.37",
|
|
636
|
+
ProjectType.MLOPS_PLATFORM: "17.38",
|
|
637
|
+
# JVM
|
|
638
|
+
ProjectType.JAVA_SPRING: "17.39",
|
|
639
|
+
ProjectType.JAVA_LIBRARY: "17.40",
|
|
640
|
+
# Cloud / Infrastructure
|
|
641
|
+
ProjectType.SERVERLESS: "17.41",
|
|
642
|
+
ProjectType.KUBERNETES_OPERATOR: "17.42",
|
|
643
|
+
ProjectType.STREAMING_PIPELINE: "17.43",
|
|
644
|
+
ProjectType.DATA_WAREHOUSE: "17.44",
|
|
645
|
+
# Game development
|
|
646
|
+
ProjectType.GAME_UNITY: "17.45",
|
|
647
|
+
ProjectType.GAME_GODOT: "17.46",
|
|
648
|
+
# Web3
|
|
649
|
+
ProjectType.SMART_CONTRACT: "17.47",
|
|
650
|
+
# Desktop
|
|
651
|
+
ProjectType.DESKTOP_ELECTRON: "17.48",
|
|
652
|
+
ProjectType.DESKTOP_TAURI: "17.49",
|
|
587
653
|
}
|
|
@@ -1142,15 +1142,81 @@ def _infer_type(result: DetectionResult) -> ProjectType:
|
|
|
1142
1142
|
pkg = result.root / "package.json"
|
|
1143
1143
|
if pkg.exists():
|
|
1144
1144
|
content = pkg.read_text(encoding="utf-8")
|
|
1145
|
+
if "electron" in content:
|
|
1146
|
+
return ProjectType.DESKTOP_ELECTRON
|
|
1147
|
+
if "solidity" in content or "hardhat" in content or "ethers" in content:
|
|
1148
|
+
return ProjectType.SMART_CONTRACT
|
|
1149
|
+
if (result.root / "serverless.yml").exists() or (
|
|
1150
|
+
result.root / "wrangler.toml"
|
|
1151
|
+
).exists():
|
|
1152
|
+
return ProjectType.SERVERLESS
|
|
1145
1153
|
if "react" in content or "vue" in content or "angular" in content:
|
|
1146
1154
|
# Check if there's also a server
|
|
1147
1155
|
if (result.root / "server").exists() or "express" in content:
|
|
1148
1156
|
return ProjectType.FULLSTACK_JS
|
|
1149
1157
|
return ProjectType.WEB_FRONTEND
|
|
1158
|
+
# Tauri: has src-tauri/
|
|
1159
|
+
if (result.root / "src-tauri").is_dir():
|
|
1160
|
+
return ProjectType.DESKTOP_TAURI
|
|
1150
1161
|
return ProjectType.FULLSTACK_JS
|
|
1151
1162
|
|
|
1163
|
+
# Data warehouse: dbt_project.yml is a strong signal
|
|
1164
|
+
if (result.root / "dbt_project.yml").exists():
|
|
1165
|
+
return ProjectType.DATA_WAREHOUSE
|
|
1166
|
+
# Kubernetes operator: Go + controllers/ dir
|
|
1167
|
+
if lang == "go" and (result.root / "controllers").is_dir():
|
|
1168
|
+
return ProjectType.KUBERNETES_OPERATOR
|
|
1169
|
+
# Serverless: serverless.yml or SAM template.yaml or wrangler.toml
|
|
1170
|
+
if (
|
|
1171
|
+
(result.root / "serverless.yml").exists()
|
|
1172
|
+
or (result.root / "serverless.yaml").exists()
|
|
1173
|
+
or (result.root / "wrangler.toml").exists()
|
|
1174
|
+
):
|
|
1175
|
+
return ProjectType.SERVERLESS
|
|
1152
1176
|
# Python types
|
|
1153
1177
|
if lang == "python":
|
|
1178
|
+
# Detect AI / agent project types from dependencies before build-system checks
|
|
1179
|
+
_req_text = ""
|
|
1180
|
+
for _rf in (
|
|
1181
|
+
result.root / "requirements.txt",
|
|
1182
|
+
result.root / "pyproject.toml",
|
|
1183
|
+
):
|
|
1184
|
+
if _rf.exists():
|
|
1185
|
+
_req_text += _rf.read_text(encoding="utf-8", errors="ignore").lower()
|
|
1186
|
+
_mcp_indicators = {"mcp", "model-context-protocol", "fastmcp", "modelcontextprotocol"}
|
|
1187
|
+
_agent_orch_indicators = {"autogen", "crewai", "langgraph", "swarm", "ag2", "pyautogen"}
|
|
1188
|
+
_llm_indicators = {
|
|
1189
|
+
"langchain",
|
|
1190
|
+
"llama-index",
|
|
1191
|
+
"llama_index",
|
|
1192
|
+
"haystack",
|
|
1193
|
+
"openai",
|
|
1194
|
+
"anthropic",
|
|
1195
|
+
"litellm",
|
|
1196
|
+
}
|
|
1197
|
+
_rag_indicators = {
|
|
1198
|
+
"chromadb",
|
|
1199
|
+
"faiss",
|
|
1200
|
+
"pinecone",
|
|
1201
|
+
"weaviate",
|
|
1202
|
+
"qdrant",
|
|
1203
|
+
"pgvector",
|
|
1204
|
+
"llama-index",
|
|
1205
|
+
}
|
|
1206
|
+
_mlops_indicators = {"mlflow", "bentoml", "ray", "kubeflow", "prefect", "airflow"}
|
|
1207
|
+
_streaming_indicators = {"kafka", "flink", "pyflink", "apache-beam", "pyspark"}
|
|
1208
|
+
if any(ind in _req_text for ind in _mcp_indicators):
|
|
1209
|
+
return ProjectType.MCP_SERVER
|
|
1210
|
+
if any(ind in _req_text for ind in _agent_orch_indicators):
|
|
1211
|
+
return ProjectType.AGENT_ORCHESTRATION
|
|
1212
|
+
if any(ind in _req_text for ind in _rag_indicators):
|
|
1213
|
+
return ProjectType.RAG_PIPELINE
|
|
1214
|
+
if any(ind in _req_text for ind in _mlops_indicators):
|
|
1215
|
+
return ProjectType.MLOPS_PLATFORM
|
|
1216
|
+
if any(ind in _req_text for ind in _streaming_indicators):
|
|
1217
|
+
return ProjectType.STREAMING_PIPELINE
|
|
1218
|
+
if any(ind in _req_text for ind in _llm_indicators):
|
|
1219
|
+
return ProjectType.LLM_APP
|
|
1154
1220
|
if build in ("pyproject", "setuptools"):
|
|
1155
1221
|
# Check for CLI entry point
|
|
1156
1222
|
if any("cli.py" in e for e in result.entry_points):
|
|
@@ -435,6 +435,175 @@ def _get_empty_dirs(config: ProjectConfig, target: Path) -> list[Path]:
|
|
|
435
435
|
target / "tests",
|
|
436
436
|
]
|
|
437
437
|
)
|
|
438
|
+
# --- AI / LLM / Agents ---
|
|
439
|
+
elif config.type == ProjectType.LLM_APP:
|
|
440
|
+
dirs.extend(
|
|
441
|
+
[
|
|
442
|
+
target / "src" / config.package_name,
|
|
443
|
+
target / "src" / config.package_name / "agents",
|
|
444
|
+
target / "src" / config.package_name / "tools",
|
|
445
|
+
target / "src" / config.package_name / "prompts",
|
|
446
|
+
target / "tests",
|
|
447
|
+
]
|
|
448
|
+
)
|
|
449
|
+
elif config.type == ProjectType.AGENT_ORCHESTRATION:
|
|
450
|
+
dirs.extend(
|
|
451
|
+
[
|
|
452
|
+
target / "src" / config.package_name,
|
|
453
|
+
target / "src" / config.package_name / "agents",
|
|
454
|
+
target / "src" / config.package_name / "tools",
|
|
455
|
+
target / "src" / config.package_name / "memory",
|
|
456
|
+
target / "tests",
|
|
457
|
+
target / "examples",
|
|
458
|
+
]
|
|
459
|
+
)
|
|
460
|
+
elif config.type == ProjectType.MCP_SERVER:
|
|
461
|
+
dirs.extend(
|
|
462
|
+
[
|
|
463
|
+
target / "src" / config.package_name,
|
|
464
|
+
target / "src" / config.package_name / "tools",
|
|
465
|
+
target / "src" / config.package_name / "resources",
|
|
466
|
+
target / "tests",
|
|
467
|
+
]
|
|
468
|
+
)
|
|
469
|
+
elif config.type == ProjectType.RAG_PIPELINE:
|
|
470
|
+
dirs.extend(
|
|
471
|
+
[
|
|
472
|
+
target / "src" / config.package_name,
|
|
473
|
+
target / "src" / config.package_name / "ingestion",
|
|
474
|
+
target / "src" / config.package_name / "retrieval",
|
|
475
|
+
target / "src" / config.package_name / "generation",
|
|
476
|
+
target / "data",
|
|
477
|
+
target / "tests",
|
|
478
|
+
]
|
|
479
|
+
)
|
|
480
|
+
elif config.type == ProjectType.MLOPS_PLATFORM:
|
|
481
|
+
dirs.extend(
|
|
482
|
+
[
|
|
483
|
+
target / "src" / config.package_name,
|
|
484
|
+
target / "pipelines",
|
|
485
|
+
target / "models",
|
|
486
|
+
target / "experiments",
|
|
487
|
+
target / "serving",
|
|
488
|
+
target / "tests",
|
|
489
|
+
]
|
|
490
|
+
)
|
|
491
|
+
# --- JVM ---
|
|
492
|
+
elif config.type == ProjectType.JAVA_SPRING:
|
|
493
|
+
dirs.extend(
|
|
494
|
+
[
|
|
495
|
+
target / "src/main/java",
|
|
496
|
+
target / "src/main/resources",
|
|
497
|
+
target / "src/test/java",
|
|
498
|
+
target / "src/test/resources",
|
|
499
|
+
]
|
|
500
|
+
)
|
|
501
|
+
elif config.type == ProjectType.JAVA_LIBRARY:
|
|
502
|
+
dirs.extend(
|
|
503
|
+
[
|
|
504
|
+
target / "src/main/java",
|
|
505
|
+
target / "src/test/java",
|
|
506
|
+
target / "examples",
|
|
507
|
+
]
|
|
508
|
+
)
|
|
509
|
+
# --- Cloud / Infrastructure ---
|
|
510
|
+
elif config.type == ProjectType.SERVERLESS:
|
|
511
|
+
dirs.extend(
|
|
512
|
+
[
|
|
513
|
+
target / "functions",
|
|
514
|
+
target / "shared",
|
|
515
|
+
target / "tests",
|
|
516
|
+
target / "infrastructure",
|
|
517
|
+
]
|
|
518
|
+
)
|
|
519
|
+
elif config.type == ProjectType.KUBERNETES_OPERATOR:
|
|
520
|
+
dirs.extend(
|
|
521
|
+
[
|
|
522
|
+
target / "cmd/manager",
|
|
523
|
+
target / "controllers",
|
|
524
|
+
target / "api/v1alpha1",
|
|
525
|
+
target / "config/crd",
|
|
526
|
+
target / "config/rbac",
|
|
527
|
+
target / "config/manager",
|
|
528
|
+
target / "tests/e2e",
|
|
529
|
+
]
|
|
530
|
+
)
|
|
531
|
+
elif config.type == ProjectType.STREAMING_PIPELINE:
|
|
532
|
+
dirs.extend(
|
|
533
|
+
[
|
|
534
|
+
target / "src" / config.package_name / "sources",
|
|
535
|
+
target / "src" / config.package_name / "transforms",
|
|
536
|
+
target / "src" / config.package_name / "sinks",
|
|
537
|
+
target / "tests",
|
|
538
|
+
target / "deploy",
|
|
539
|
+
]
|
|
540
|
+
)
|
|
541
|
+
elif config.type == ProjectType.DATA_WAREHOUSE:
|
|
542
|
+
dirs.extend(
|
|
543
|
+
[
|
|
544
|
+
target / "models",
|
|
545
|
+
target / "models/staging",
|
|
546
|
+
target / "models/intermediate",
|
|
547
|
+
target / "models/marts",
|
|
548
|
+
target / "macros",
|
|
549
|
+
target / "tests",
|
|
550
|
+
target / "seeds",
|
|
551
|
+
target / "analyses",
|
|
552
|
+
]
|
|
553
|
+
)
|
|
554
|
+
# --- Game development ---
|
|
555
|
+
elif config.type == ProjectType.GAME_UNITY:
|
|
556
|
+
dirs.extend(
|
|
557
|
+
[
|
|
558
|
+
target / "Assets/Scripts",
|
|
559
|
+
target / "Assets/Scenes",
|
|
560
|
+
target / "Assets/Prefabs",
|
|
561
|
+
target / "Assets/Materials",
|
|
562
|
+
target / "Assets/Audio",
|
|
563
|
+
target / "Assets/Tests",
|
|
564
|
+
]
|
|
565
|
+
)
|
|
566
|
+
elif config.type == ProjectType.GAME_GODOT:
|
|
567
|
+
dirs.extend(
|
|
568
|
+
[
|
|
569
|
+
target / "scenes",
|
|
570
|
+
target / "scripts",
|
|
571
|
+
target / "assets/sprites",
|
|
572
|
+
target / "assets/audio",
|
|
573
|
+
target / "tests",
|
|
574
|
+
]
|
|
575
|
+
)
|
|
576
|
+
# --- Web3 ---
|
|
577
|
+
elif config.type == ProjectType.SMART_CONTRACT:
|
|
578
|
+
dirs.extend(
|
|
579
|
+
[
|
|
580
|
+
target / "contracts",
|
|
581
|
+
target / "contracts/interfaces",
|
|
582
|
+
target / "scripts",
|
|
583
|
+
target / "test",
|
|
584
|
+
target / "deployments",
|
|
585
|
+
]
|
|
586
|
+
)
|
|
587
|
+
# --- Desktop ---
|
|
588
|
+
elif config.type == ProjectType.DESKTOP_ELECTRON:
|
|
589
|
+
dirs.extend(
|
|
590
|
+
[
|
|
591
|
+
target / "src/main",
|
|
592
|
+
target / "src/renderer",
|
|
593
|
+
target / "src/shared",
|
|
594
|
+
target / "tests",
|
|
595
|
+
target / "build",
|
|
596
|
+
]
|
|
597
|
+
)
|
|
598
|
+
elif config.type == ProjectType.DESKTOP_TAURI:
|
|
599
|
+
dirs.extend(
|
|
600
|
+
[
|
|
601
|
+
target / "src",
|
|
602
|
+
target / "src-tauri/src",
|
|
603
|
+
target / "src-tauri/icons",
|
|
604
|
+
target / "tests",
|
|
605
|
+
]
|
|
606
|
+
)
|
|
438
607
|
# --- AEE / Epistemic project types ---
|
|
439
608
|
elif config.type == ProjectType.EPISTEMIC_PIPELINE:
|
|
440
609
|
dirs.extend(
|
|
@@ -56,6 +56,12 @@ class SkillDomain(str, Enum):
|
|
|
56
56
|
PRODUCTIVITY = "productivity"
|
|
57
57
|
CORPORATE = "corporate"
|
|
58
58
|
DOCS = "docs" # documentation systems — H23/H24
|
|
59
|
+
# New domains
|
|
60
|
+
AI_AGENTS = "ai-agents" # LLM/agent development, RAG, MCP, MLOps
|
|
61
|
+
SOFTWARE_ENGINEERING = "software-engineering" # code review, TDD, debugging, security
|
|
62
|
+
WEB_BACKEND = "web-backend" # frontend, REST, GraphQL, databases, caching
|
|
63
|
+
DATA_ENGINEERING = "data-engineering" # ETL, dbt, Spark, data quality
|
|
64
|
+
PLATFORM_ENGINEERING = "platform-engineering" # K8s, observability, GitOps, secrets
|
|
59
65
|
|
|
60
66
|
|
|
61
67
|
# ---------------------------------------------------------------------------
|
|
@@ -112,18 +118,23 @@ _CATALOG: list[SkillEntry] | None = None
|
|
|
112
118
|
def _build_catalog() -> list[SkillEntry]:
|
|
113
119
|
"""Import every domain module and concatenate their SKILLS lists."""
|
|
114
120
|
from specsmith.skills import ( # noqa: PLC0415
|
|
121
|
+
ai_agents,
|
|
115
122
|
cloud,
|
|
116
123
|
corporate,
|
|
117
124
|
cross_platform,
|
|
125
|
+
data_engineering,
|
|
118
126
|
devops,
|
|
119
127
|
docs,
|
|
120
128
|
embedded,
|
|
121
129
|
governance,
|
|
122
130
|
hardware,
|
|
123
131
|
mobile,
|
|
132
|
+
platform_engineering,
|
|
124
133
|
productivity,
|
|
134
|
+
software_engineering,
|
|
125
135
|
specsmith_skills,
|
|
126
136
|
ssh,
|
|
137
|
+
web_backend,
|
|
127
138
|
)
|
|
128
139
|
|
|
129
140
|
return (
|
|
@@ -139,6 +150,12 @@ def _build_catalog() -> list[SkillEntry]:
|
|
|
139
150
|
+ corporate.SKILLS
|
|
140
151
|
+ docs.SKILLS
|
|
141
152
|
+ specsmith_skills.SKILLS
|
|
153
|
+
# New domains
|
|
154
|
+
+ ai_agents.SKILLS
|
|
155
|
+
+ software_engineering.SKILLS
|
|
156
|
+
+ web_backend.SKILLS
|
|
157
|
+
+ data_engineering.SKILLS
|
|
158
|
+
+ platform_engineering.SKILLS
|
|
142
159
|
)
|
|
143
160
|
|
|
144
161
|
|