specsmith 0.11.7.dev469__tar.gz → 0.11.8.dev483__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.11.7.dev469/src/specsmith.egg-info → specsmith-0.11.8.dev483}/PKG-INFO +1 -1
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/pyproject.toml +1 -1
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/__init__.py +1 -1
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/config.py +1 -1
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/__init__.py +13 -10
- specsmith-0.11.8.dev483/src/specsmith/skills/specsmith_skills.py +267 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483/src/specsmith.egg-info}/PKG-INFO +1 -1
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith.egg-info/SOURCES.txt +1 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_cli.py +2 -2
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/LICENSE +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/README.md +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/setup.cfg +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/belief.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/certainty.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/py.typed +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/recovery.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/session.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/epistemic/trace.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/__main__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/architect.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/auditor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/auth.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/block_export.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/channel.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/cli.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/compressor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/context_window.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/credits.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/differ.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/doctor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/drive.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/editor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/executor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/exporter.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/governance_logic.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/history_search.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/importer.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/instinct.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/languages.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/ledger.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/patent.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/paths.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/phase.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/plugins.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/profiles.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/releaser.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/requirements.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/serve.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/session.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/session_init.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/session_store.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/sync.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/tools.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/trace.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/updater.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/validator.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/workspace.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_CMD_001.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_ai_client.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_auditor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_channel.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_compliance.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_compressor.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_dispatch.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_epistemic.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_importer.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_integrations.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_intelligence.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_mcp_client.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_new_modules.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_nexus.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_permissions.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_rate_limits.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_req_248_262.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_req_358_359.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_scaffolder.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_smoke.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_suggester.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_tools.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_validator.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_vcs.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/tests/test_warp_parity.py +0 -0
- {specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/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.11.
|
|
3
|
+
Version: 0.11.8.dev483
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.11.
|
|
7
|
+
version = "0.11.8.dev483"
|
|
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"
|
|
@@ -8,4 +8,4 @@ from importlib.metadata import version as _pkg_version
|
|
|
8
8
|
try:
|
|
9
9
|
__version__: str = _pkg_version("specsmith")
|
|
10
10
|
except PackageNotFoundError: # running from source without install
|
|
11
|
-
__version__ = "0.11.
|
|
11
|
+
__version__ = "0.11.8" # fallback: keep in sync with pyproject.toml
|
|
@@ -115,7 +115,7 @@ class ProjectConfig(BaseModel):
|
|
|
115
115
|
),
|
|
116
116
|
)
|
|
117
117
|
language: str = Field(default="python", description="Primary language/runtime")
|
|
118
|
-
spec_version: str = Field(default="0.11.
|
|
118
|
+
spec_version: str = Field(default="0.11.8", description="Spec version to scaffold from")
|
|
119
119
|
description: str = Field(default="", description="Short project description")
|
|
120
120
|
|
|
121
121
|
# Options
|
|
@@ -11,16 +11,17 @@ existing code continues to work without changes.
|
|
|
11
11
|
|
|
12
12
|
Domain modules
|
|
13
13
|
~~~~~~~~~~~~~~
|
|
14
|
-
governance
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
governance — project governance, verification, review, release workflows
|
|
15
|
+
specsmith_skills — specsmith self-referential skills (save, audit, reference)
|
|
16
|
+
embedded — RTOS/BSP: Zephyr, Yocto, FreeRTOS, NuttX, Buildroot, Azure RTOS …
|
|
17
|
+
hardware — EDA: KiCad, Altium, Vivado, Quartus, GTKWave, OpenOCD, JTAG
|
|
18
|
+
mobile — iOS (Xcode/Swift/TestFlight), Android (Gradle/ADB), Flutter, RN
|
|
19
|
+
cloud — AWS CLI, Azure CLI, GCP, GitHub CLI (gh)
|
|
20
|
+
devops — Docker, Kubernetes, Terraform, CI/CD pipelines
|
|
21
|
+
ssh — SSH key management, remote-dev, WSL2
|
|
22
|
+
cross_platform — CMake/vcpkg/conan, package managers, cross-OS CI
|
|
23
|
+
productivity — Email, presentations, Gamma.ai, MS Office, LibreOffice
|
|
24
|
+
corporate — Budgets, project mgmt, HR, fundraising, marketing, sales, legal
|
|
24
25
|
|
|
25
26
|
Usage
|
|
26
27
|
~~~~~
|
|
@@ -121,6 +122,7 @@ def _build_catalog() -> list[SkillEntry]:
|
|
|
121
122
|
hardware,
|
|
122
123
|
mobile,
|
|
123
124
|
productivity,
|
|
125
|
+
specsmith_skills,
|
|
124
126
|
ssh,
|
|
125
127
|
)
|
|
126
128
|
|
|
@@ -136,6 +138,7 @@ def _build_catalog() -> list[SkillEntry]:
|
|
|
136
138
|
+ productivity.SKILLS
|
|
137
139
|
+ corporate.SKILLS
|
|
138
140
|
+ docs.SKILLS
|
|
141
|
+
+ specsmith_skills.SKILLS
|
|
139
142
|
)
|
|
140
143
|
|
|
141
144
|
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
"""Specsmith self-referential skills — how to USE specsmith in any project.
|
|
3
|
+
|
|
4
|
+
These skills teach AI agents (Warp, Claude Code, Codex, Cursor, etc.) the
|
|
5
|
+
core specsmith governance workflows. Install in any project via:
|
|
6
|
+
|
|
7
|
+
specsmith skill install specsmith
|
|
8
|
+
specsmith skill install specsmith-save
|
|
9
|
+
specsmith skill install specsmith-audit
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from specsmith.skills import SkillDomain, SkillEntry
|
|
13
|
+
|
|
14
|
+
SKILLS: list[SkillEntry] = [
|
|
15
|
+
SkillEntry(
|
|
16
|
+
slug="specsmith",
|
|
17
|
+
name="Specsmith \u2014 AEE governance CLI reference",
|
|
18
|
+
description=(
|
|
19
|
+
"Master reference for the specsmith AEE governance tool: key concepts, "
|
|
20
|
+
"common commands, session workflow, phase advancement, and audit codes. "
|
|
21
|
+
"Use whenever working in a specsmith-governed project."
|
|
22
|
+
),
|
|
23
|
+
domain=SkillDomain.GOVERNANCE,
|
|
24
|
+
tags=[
|
|
25
|
+
"specsmith",
|
|
26
|
+
"aee",
|
|
27
|
+
"governance",
|
|
28
|
+
"session",
|
|
29
|
+
"workflow",
|
|
30
|
+
"audit",
|
|
31
|
+
"phase",
|
|
32
|
+
"save",
|
|
33
|
+
"esdb",
|
|
34
|
+
"ledger",
|
|
35
|
+
],
|
|
36
|
+
prerequisites=["specsmith"],
|
|
37
|
+
body="""\
|
|
38
|
+
# Specsmith \u2014 Project Governance Tool
|
|
39
|
+
|
|
40
|
+
Specsmith is the AEE (Agile Epistemic Engineering) governance CLI. It manages
|
|
41
|
+
requirements, phases, audit trails, and session state. It wraps git with
|
|
42
|
+
governance-aware commits and backs up the epistemic state DB (ESDB).
|
|
43
|
+
|
|
44
|
+
## Key concepts
|
|
45
|
+
|
|
46
|
+
- **ESDB** \u2014 Epistemic State Database. Tracks certainty, audit state, session memory.
|
|
47
|
+
Backed up on `specsmith save`.
|
|
48
|
+
- **Phases** \u2014 AEE lifecycle: Inception \u2192 Elaboration \u2192 Construction \u2192
|
|
49
|
+
Transition \u2192 Validation \u2192 Hardening \u2192 Release.
|
|
50
|
+
- **Ledger** \u2014 Running log of changes in `LEDGER.md`. Auto-updated by commits.
|
|
51
|
+
- **Audit** \u2014 Checks requirements vs tests vs architecture for drift.
|
|
52
|
+
Required before phase advance.
|
|
53
|
+
- **Save** \u2014 ESDB backup + governance-aware git commit + push.
|
|
54
|
+
|
|
55
|
+
## Session workflow
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
1. specsmith audit # check for drift before working
|
|
59
|
+
2. <make code changes>
|
|
60
|
+
3. specsmith save # commit + push + ESDB backup
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Common commands
|
|
64
|
+
|
|
65
|
+
| Command | What it does |
|
|
66
|
+
|---------|-------------|
|
|
67
|
+
| `specsmith save` | ESDB backup \u2192 commit (if needed) \u2192 push |
|
|
68
|
+
| `specsmith audit` | Drift/health check \u2014 requirements vs tests vs arch |
|
|
69
|
+
| `specsmith audit --suppress <CODE>` | Accept a known false positive |
|
|
70
|
+
| `specsmith phase` | Show current AEE phase |
|
|
71
|
+
| `specsmith phase advance` | Advance to next phase (requires clean audit) |
|
|
72
|
+
| `specsmith commit` | Governance-aware commit (wraps git commit) |
|
|
73
|
+
| `specsmith ledger` | Show/manage the change ledger |
|
|
74
|
+
| `specsmith compress` | Compress old ledger entries |
|
|
75
|
+
| `specsmith req` | Manage requirements |
|
|
76
|
+
| `specsmith test` | Manage test cases |
|
|
77
|
+
| `specsmith status` | VCS/CI/PR status |
|
|
78
|
+
| `specsmith skill list` | List built-in installable skills |
|
|
79
|
+
| `specsmith skill install <slug>` | Install a skill into `.agents/skills/` |
|
|
80
|
+
|
|
81
|
+
## Commit conventions
|
|
82
|
+
|
|
83
|
+
Specsmith commits follow: `type: message` where type is one of:
|
|
84
|
+
`feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `perf`
|
|
85
|
+
|
|
86
|
+
Always append `Co-Authored-By: Oz <oz-agent@warp.dev>` when committing as an AI agent.
|
|
87
|
+
|
|
88
|
+
## Important rules
|
|
89
|
+
|
|
90
|
+
- **Never use `git commit` directly** \u2014 use `specsmith save` or `specsmith commit`.
|
|
91
|
+
- **Run `specsmith audit` before advancing a phase** \u2014 drift will cause failure.
|
|
92
|
+
- **Suppressed audit findings** are stored permanently; only suppress genuine false positives.
|
|
93
|
+
- After `specsmith save` outputs `\u2713 push: Everything up-to-date`, the repo is clean.
|
|
94
|
+
|
|
95
|
+
## Audit result codes
|
|
96
|
+
|
|
97
|
+
- `PASS` \u2014 requirement/test/arch is consistent
|
|
98
|
+
- `WARN` \u2014 drift detected, investigate
|
|
99
|
+
- `SKIP` / suppressed \u2014 accepted false positive
|
|
100
|
+
- IDs like `R20`, `R21` \u2014 requirement IDs in ARCHITECTURE.md
|
|
101
|
+
|
|
102
|
+
## Phase advancement
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
specsmith audit # must be all-pass (or suppressed)
|
|
106
|
+
specsmith phase advance # bumps phase, writes ledger entry
|
|
107
|
+
specsmith save # commit the phase bump
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Installing skills in any project
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
specsmith skill install specsmith # this reference card
|
|
114
|
+
specsmith skill install specsmith-save # save workflow
|
|
115
|
+
specsmith skill install specsmith-audit # audit workflow
|
|
116
|
+
```
|
|
117
|
+
""",
|
|
118
|
+
),
|
|
119
|
+
SkillEntry(
|
|
120
|
+
slug="specsmith-save",
|
|
121
|
+
name="Specsmith Save \u2014 commit and push with governance state backup",
|
|
122
|
+
description=(
|
|
123
|
+
"How and when to run `specsmith save`: backs up the ESDB, commits any "
|
|
124
|
+
"staged/unstaged changes, and pushes to the remote. Use at the end of "
|
|
125
|
+
"any work session or after completing a feature/fix."
|
|
126
|
+
),
|
|
127
|
+
domain=SkillDomain.GOVERNANCE,
|
|
128
|
+
tags=[
|
|
129
|
+
"specsmith",
|
|
130
|
+
"save",
|
|
131
|
+
"commit",
|
|
132
|
+
"push",
|
|
133
|
+
"esdb",
|
|
134
|
+
"governance",
|
|
135
|
+
"session",
|
|
136
|
+
],
|
|
137
|
+
prerequisites=["specsmith"],
|
|
138
|
+
body="""\
|
|
139
|
+
# Specsmith Save
|
|
140
|
+
|
|
141
|
+
Saves governance state: backs up the ESDB, commits any staged/unstaged changes,
|
|
142
|
+
and pushes to the remote.
|
|
143
|
+
|
|
144
|
+
## When to use
|
|
145
|
+
|
|
146
|
+
- At the end of any work session
|
|
147
|
+
- After implementing a feature, fix, or refactor
|
|
148
|
+
- After advancing a phase
|
|
149
|
+
- Whenever the user says \"save\", \"commit and push\", or \"specsmith save\"
|
|
150
|
+
|
|
151
|
+
## How to run
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
specsmith save
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## What it does (in order)
|
|
158
|
+
|
|
159
|
+
1. **ESDB backup** \u2014 snapshots the epistemic state database
|
|
160
|
+
2. **Commit** \u2014 stages all changes and commits (or reports \"Nothing to commit\")
|
|
161
|
+
3. **Push** \u2014 pushes the branch to origin (or reports \"Everything up-to-date\")
|
|
162
|
+
|
|
163
|
+
## Expected successful output
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
\u2713 esdb_backup: JSON fallback (no WAL to backup)
|
|
167
|
+
\u2713 commit: Nothing to commit \u2190 or a commit hash
|
|
168
|
+
\u2713 push: Everything up-to-date \u2190 or \"pushed to origin/branch\"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## If there are changes to commit
|
|
172
|
+
|
|
173
|
+
Specsmith auto-stages and commits. You can also pre-stage manually:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
git add -A
|
|
177
|
+
git commit -m \"feat: description
|
|
178
|
+
|
|
179
|
+
Co-Authored-By: Oz <oz-agent@warp.dev>\"
|
|
180
|
+
specsmith save # will see nothing to commit, just pushes
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Do NOT use `git push` directly
|
|
184
|
+
|
|
185
|
+
Always use `specsmith save` \u2014 it ensures the ESDB backup runs before the push,
|
|
186
|
+
keeping governance state consistent with the remote.
|
|
187
|
+
""",
|
|
188
|
+
),
|
|
189
|
+
SkillEntry(
|
|
190
|
+
slug="specsmith-audit",
|
|
191
|
+
name="Specsmith Audit \u2014 governance drift check",
|
|
192
|
+
description=(
|
|
193
|
+
"How to run `specsmith audit` to check for governance drift between "
|
|
194
|
+
"requirements, tests, and architecture. Required before advancing an AEE phase."
|
|
195
|
+
),
|
|
196
|
+
domain=SkillDomain.GOVERNANCE,
|
|
197
|
+
tags=[
|
|
198
|
+
"specsmith",
|
|
199
|
+
"audit",
|
|
200
|
+
"drift",
|
|
201
|
+
"requirements",
|
|
202
|
+
"governance",
|
|
203
|
+
"aee",
|
|
204
|
+
"phase",
|
|
205
|
+
"verification",
|
|
206
|
+
],
|
|
207
|
+
prerequisites=["specsmith"],
|
|
208
|
+
body="""\
|
|
209
|
+
# Specsmith Audit
|
|
210
|
+
|
|
211
|
+
Checks the project for drift between requirements (ARCHITECTURE.md), test cases,
|
|
212
|
+
and the codebase. Must pass before advancing an AEE phase.
|
|
213
|
+
|
|
214
|
+
## How to run
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
specsmith audit
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Interpreting results
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
29 PASS \u2190 all requirements have matching tests and implementation
|
|
224
|
+
2 WARN \u2190 drift detected \u2014 investigate these
|
|
225
|
+
0 FAIL
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**All items must be PASS or suppressed before `specsmith phase advance`.**
|
|
229
|
+
|
|
230
|
+
## When a WARN appears
|
|
231
|
+
|
|
232
|
+
1. Read the warning \u2014 it references a requirement ID (e.g. `R20`) and describes what's missing
|
|
233
|
+
2. Fix it: add the missing test, update ARCHITECTURE.md, or implement the requirement
|
|
234
|
+
3. Re-run `specsmith audit` to confirm it passes
|
|
235
|
+
4. If it's a confirmed false positive: `specsmith audit --suppress <CODE>`
|
|
236
|
+
|
|
237
|
+
## Suppressing a false positive
|
|
238
|
+
|
|
239
|
+
Only suppress if you've verified the requirement IS met but the audit can't detect it:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
specsmith audit --suppress SEAL-XXXX-001
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Suppressions are permanent \u2014 use sparingly.
|
|
246
|
+
|
|
247
|
+
## Common causes of WARN
|
|
248
|
+
|
|
249
|
+
- Requirement in ARCHITECTURE.md has no corresponding test case
|
|
250
|
+
- Test exists but requirement ID reference is missing from the test
|
|
251
|
+
- Implementation exists but the architecture doc wasn't updated to match
|
|
252
|
+
|
|
253
|
+
## After fixing all warnings
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
specsmith audit # confirm all pass
|
|
257
|
+
specsmith phase advance # advance the phase
|
|
258
|
+
specsmith save # commit the phase bump
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Quick audit before a session
|
|
262
|
+
|
|
263
|
+
Run `specsmith audit` at the start of a session to catch drift from the previous
|
|
264
|
+
session before making new changes.
|
|
265
|
+
""",
|
|
266
|
+
),
|
|
267
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.8.dev483
|
|
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
|
|
@@ -186,6 +186,7 @@ src/specsmith/skills/governance.py
|
|
|
186
186
|
src/specsmith/skills/hardware.py
|
|
187
187
|
src/specsmith/skills/mobile.py
|
|
188
188
|
src/specsmith/skills/productivity.py
|
|
189
|
+
src/specsmith/skills/specsmith_skills.py
|
|
189
190
|
src/specsmith/skills/ssh.py
|
|
190
191
|
src/specsmith/templates/agents.md.j2
|
|
191
192
|
src/specsmith/templates/editorconfig.j2
|
|
@@ -124,14 +124,14 @@ class TestCLIUpgrade:
|
|
|
124
124
|
yaml.dump(data, fh, default_flow_style=False)
|
|
125
125
|
runner = CliRunner()
|
|
126
126
|
result = runner.invoke(
|
|
127
|
-
main, ["upgrade", "--project-dir", str(target), "--spec-version", "0.11.
|
|
127
|
+
main, ["upgrade", "--project-dir", str(target), "--spec-version", "0.11.8"]
|
|
128
128
|
)
|
|
129
129
|
assert result.exit_code == 0
|
|
130
130
|
assert "Upgraded" in result.output
|
|
131
131
|
# Verify scaffold.yml spec_version was updated to the target version
|
|
132
132
|
with open(target / "scaffold.yml") as fh:
|
|
133
133
|
data = yaml.safe_load(fh)
|
|
134
|
-
assert data["spec_version"] == "0.11.
|
|
134
|
+
assert data["spec_version"] == "0.11.8"
|
|
135
135
|
|
|
136
136
|
|
|
137
137
|
class TestCLICreditsLimits:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/dispatch/dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/execution_profiles.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/model_intelligence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/agent/provider_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/datasources/patentsview.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/failure_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.11.7.dev469 → specsmith-0.11.8.dev483}/src/specsmith/epistemic/stress_tester.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|