anima-core 0.3.0 → 1.0.1
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.
- checksums.yaml +4 -4
- data/.reek.yml +27 -1
- data/CHANGELOG.md +4 -0
- data/README.md +219 -25
- data/agents/codebase-analyzer.md +88 -0
- data/agents/codebase-pattern-finder.md +83 -0
- data/agents/documentation-researcher.md +59 -0
- data/agents/thoughts-analyzer.md +102 -0
- data/agents/web-search-researcher.md +71 -0
- data/anima-core.gemspec +4 -1
- data/app/channels/session_channel.rb +76 -28
- data/app/jobs/agent_request_job.rb +24 -0
- data/app/jobs/analytical_brain_job.rb +33 -0
- data/app/jobs/count_event_tokens_job.rb +1 -1
- data/app/models/concerns/event/broadcasting.rb +20 -2
- data/app/models/event.rb +1 -1
- data/app/models/goal.rb +91 -0
- data/app/models/session.rb +347 -22
- data/config/application.rb +2 -0
- data/db/migrate/20260314075248_add_subagent_support_to_sessions.rb +6 -0
- data/db/migrate/20260314112417_add_granted_tools_to_sessions.rb +5 -0
- data/db/migrate/20260314140000_add_name_to_sessions.rb +7 -0
- data/db/migrate/20260314150000_add_viewport_event_ids_to_sessions.rb +7 -0
- data/db/migrate/20260315100000_add_active_skills_to_sessions.rb +7 -0
- data/db/migrate/20260315140843_create_goals.rb +16 -0
- data/db/migrate/20260315144837_add_completed_at_to_goals.rb +5 -0
- data/db/migrate/20260315191105_add_active_workflow_to_sessions.rb +5 -0
- data/lib/agent_loop.rb +65 -9
- data/lib/agents/definition.rb +116 -0
- data/lib/agents/registry.rb +106 -0
- data/lib/analytical_brain/runner.rb +276 -0
- data/lib/analytical_brain/tools/activate_skill.rb +52 -0
- data/lib/analytical_brain/tools/deactivate_skill.rb +43 -0
- data/lib/analytical_brain/tools/deactivate_workflow.rb +34 -0
- data/lib/analytical_brain/tools/everything_is_ready.rb +28 -0
- data/lib/analytical_brain/tools/finish_goal.rb +62 -0
- data/lib/analytical_brain/tools/read_workflow.rb +58 -0
- data/lib/analytical_brain/tools/rename_session.rb +63 -0
- data/lib/analytical_brain/tools/set_goal.rb +60 -0
- data/lib/analytical_brain/tools/update_goal.rb +60 -0
- data/lib/analytical_brain.rb +23 -0
- data/lib/anima/cli/mcp/secrets.rb +76 -0
- data/lib/anima/cli/mcp.rb +197 -0
- data/lib/anima/cli.rb +4 -0
- data/lib/anima/installer.rb +182 -6
- data/lib/anima/settings.rb +226 -0
- data/lib/anima/version.rb +1 -1
- data/lib/anima.rb +9 -0
- data/lib/credential_store.rb +103 -0
- data/lib/environment_probe.rb +232 -0
- data/lib/llm/client.rb +29 -10
- data/lib/mcp/client_manager.rb +86 -0
- data/lib/mcp/config.rb +213 -0
- data/lib/mcp/health_check.rb +77 -0
- data/lib/mcp/secrets.rb +73 -0
- data/lib/mcp/stdio_transport.rb +206 -0
- data/lib/providers/anthropic.rb +8 -7
- data/lib/shell_session.rb +11 -10
- data/lib/skills/definition.rb +97 -0
- data/lib/skills/registry.rb +105 -0
- data/lib/tools/edit.rb +3 -4
- data/lib/tools/mcp_tool.rb +114 -0
- data/lib/tools/read.rb +15 -16
- data/lib/tools/registry.rb +14 -12
- data/lib/tools/request_feature.rb +121 -0
- data/lib/tools/return_result.rb +81 -0
- data/lib/tools/spawn_specialist.rb +109 -0
- data/lib/tools/spawn_subagent.rb +111 -0
- data/lib/tools/subagent_prompts.rb +12 -0
- data/lib/tools/web_get.rb +8 -9
- data/lib/tui/app.rb +332 -43
- data/lib/tui/message_store.rb +20 -0
- data/lib/tui/screens/chat.rb +207 -20
- data/lib/workflows/definition.rb +97 -0
- data/lib/workflows/registry.rb +89 -0
- data/skills/activerecord/SKILL.md +255 -0
- data/skills/activerecord/examples/associations/association_extensions.rb +298 -0
- data/skills/activerecord/examples/associations/basic_associations.rb +118 -0
- data/skills/activerecord/examples/associations/counter_caches.rb +215 -0
- data/skills/activerecord/examples/associations/polymorphic_associations.rb +217 -0
- data/skills/activerecord/examples/associations/self_referential.rb +302 -0
- data/skills/activerecord/examples/associations/through_associations.rb +203 -0
- data/skills/activerecord/examples/basics/crud_operations.rb +209 -0
- data/skills/activerecord/examples/basics/dirty_tracking.rb +218 -0
- data/skills/activerecord/examples/basics/inheritance.rb +377 -0
- data/skills/activerecord/examples/basics/type_casting.rb +317 -0
- data/skills/activerecord/examples/callbacks/alternatives_to_callbacks.rb +447 -0
- data/skills/activerecord/examples/callbacks/conditional_callbacks.rb +353 -0
- data/skills/activerecord/examples/callbacks/lifecycle_callbacks.rb +280 -0
- data/skills/activerecord/examples/callbacks/transaction_callbacks.rb +340 -0
- data/skills/activerecord/examples/migrations/indexes_and_constraints.rb +337 -0
- data/skills/activerecord/examples/migrations/reversible_patterns.rb +403 -0
- data/skills/activerecord/examples/migrations/safe_patterns.rb +420 -0
- data/skills/activerecord/examples/migrations/schema_changes.rb +277 -0
- data/skills/activerecord/examples/querying/batch_processing.rb +226 -0
- data/skills/activerecord/examples/querying/eager_loading.rb +259 -0
- data/skills/activerecord/examples/querying/finder_methods.rb +170 -0
- data/skills/activerecord/examples/querying/optimization.rb +275 -0
- data/skills/activerecord/examples/querying/scopes.rb +260 -0
- data/skills/activerecord/examples/validations/built_in_validators.rb +277 -0
- data/skills/activerecord/examples/validations/conditional_validations.rb +288 -0
- data/skills/activerecord/examples/validations/custom_validators.rb +381 -0
- data/skills/activerecord/examples/validations/database_constraints.rb +432 -0
- data/skills/activerecord/examples/validations/validation_contexts.rb +367 -0
- data/skills/activerecord/references/associations.md +709 -0
- data/skills/activerecord/references/basics.md +622 -0
- data/skills/activerecord/references/callbacks.md +738 -0
- data/skills/activerecord/references/migrations.md +657 -0
- data/skills/activerecord/references/querying.md +655 -0
- data/skills/activerecord/references/validations.md +596 -0
- data/skills/dragonruby/SKILL.md +250 -0
- data/skills/dragonruby/examples/audio/audio_events.rb +55 -0
- data/skills/dragonruby/examples/audio/background_music.rb +29 -0
- data/skills/dragonruby/examples/audio/crossfade.rb +51 -0
- data/skills/dragonruby/examples/audio/music_controls.rb +51 -0
- data/skills/dragonruby/examples/audio/sound_effects.rb +30 -0
- data/skills/dragonruby/examples/core/coordinate_system.rb +27 -0
- data/skills/dragonruby/examples/core/hello_world.rb +24 -0
- data/skills/dragonruby/examples/core/labels.rb +22 -0
- data/skills/dragonruby/examples/core/sprites.rb +35 -0
- data/skills/dragonruby/examples/core/state_management.rb +29 -0
- data/skills/dragonruby/examples/distribution/background_pause.rb +42 -0
- data/skills/dragonruby/examples/distribution/build_workflow.sh +26 -0
- data/skills/dragonruby/examples/distribution/cvars_production.txt +16 -0
- data/skills/dragonruby/examples/distribution/game_metadata_hd.txt +23 -0
- data/skills/dragonruby/examples/distribution/game_metadata_minimal.txt +9 -0
- data/skills/dragonruby/examples/distribution/game_metadata_mobile.txt +31 -0
- data/skills/dragonruby/examples/distribution/platform_detection.rb +36 -0
- data/skills/dragonruby/examples/distribution/steam_metadata.txt +19 -0
- data/skills/dragonruby/examples/entities/collision_detection.rb +43 -0
- data/skills/dragonruby/examples/entities/entity_lifecycle.rb +68 -0
- data/skills/dragonruby/examples/entities/entity_storage.rb +38 -0
- data/skills/dragonruby/examples/entities/factory_methods.rb +45 -0
- data/skills/dragonruby/examples/entities/random_spawning.rb +50 -0
- data/skills/dragonruby/examples/game-logic/reset_patterns.rb +98 -0
- data/skills/dragonruby/examples/game-logic/save_load.rb +101 -0
- data/skills/dragonruby/examples/game-logic/scoring.rb +104 -0
- data/skills/dragonruby/examples/game-logic/state_transitions.rb +103 -0
- data/skills/dragonruby/examples/game-logic/timers.rb +87 -0
- data/skills/dragonruby/examples/input/action_triggers.rb +36 -0
- data/skills/dragonruby/examples/input/analog_movement.rb +28 -0
- data/skills/dragonruby/examples/input/controller_input.rb +28 -0
- data/skills/dragonruby/examples/input/directional_input.rb +24 -0
- data/skills/dragonruby/examples/input/keyboard_input.rb +28 -0
- data/skills/dragonruby/examples/input/mouse_click.rb +26 -0
- data/skills/dragonruby/examples/input/movement_with_bounds.rb +22 -0
- data/skills/dragonruby/examples/input/normalized_movement.rb +32 -0
- data/skills/dragonruby/examples/rendering/frame_animation.rb +32 -0
- data/skills/dragonruby/examples/rendering/labels.rb +32 -0
- data/skills/dragonruby/examples/rendering/layering.rb +51 -0
- data/skills/dragonruby/examples/rendering/solids.rb +61 -0
- data/skills/dragonruby/examples/rendering/sprites.rb +33 -0
- data/skills/dragonruby/examples/rendering/spritesheet_animation.rb +39 -0
- data/skills/dragonruby/examples/scenes/case_dispatch.rb +60 -0
- data/skills/dragonruby/examples/scenes/class_based.rb +150 -0
- data/skills/dragonruby/examples/scenes/pause_overlay.rb +100 -0
- data/skills/dragonruby/examples/scenes/safe_transitions.rb +68 -0
- data/skills/dragonruby/examples/scenes/scene_transitions.rb +98 -0
- data/skills/dragonruby/examples/scenes/send_dispatch.rb +88 -0
- data/skills/dragonruby/references/audio.md +396 -0
- data/skills/dragonruby/references/core.md +385 -0
- data/skills/dragonruby/references/distribution.md +434 -0
- data/skills/dragonruby/references/entities.md +516 -0
- data/skills/dragonruby/references/game-logic/persistence.md +386 -0
- data/skills/dragonruby/references/game-logic/state.md +389 -0
- data/skills/dragonruby/references/input.md +414 -0
- data/skills/dragonruby/references/rendering/animation.md +467 -0
- data/skills/dragonruby/references/rendering/primitives.md +403 -0
- data/skills/dragonruby/references/scenes.md +443 -0
- data/skills/draper-decorators/SKILL.md +344 -0
- data/skills/draper-decorators/examples/application_decorator.rb +61 -0
- data/skills/draper-decorators/examples/decorator_spec.rb +253 -0
- data/skills/draper-decorators/examples/model_decorator.rb +152 -0
- data/skills/draper-decorators/references/anti-patterns.md +640 -0
- data/skills/draper-decorators/references/patterns.md +507 -0
- data/skills/draper-decorators/references/testing.md +559 -0
- data/skills/gh-issue.md +182 -0
- data/skills/mcp-server/SKILL.md +177 -0
- data/skills/mcp-server/examples/dynamic_tools.rb +36 -0
- data/skills/mcp-server/examples/file_manager_tool.rb +85 -0
- data/skills/mcp-server/examples/http_client.rb +48 -0
- data/skills/mcp-server/examples/http_server.rb +97 -0
- data/skills/mcp-server/examples/rails_integration.rb +88 -0
- data/skills/mcp-server/examples/stdio_server.rb +108 -0
- data/skills/mcp-server/examples/streaming_client.rb +95 -0
- data/skills/mcp-server/references/gotchas.md +183 -0
- data/skills/mcp-server/references/prompts.md +98 -0
- data/skills/mcp-server/references/resources.md +53 -0
- data/skills/mcp-server/references/server.md +140 -0
- data/skills/mcp-server/references/tools.md +146 -0
- data/skills/mcp-server/references/transport.md +104 -0
- data/skills/ratatui-ruby/SKILL.md +315 -0
- data/skills/ratatui-ruby/references/core-concepts.md +340 -0
- data/skills/ratatui-ruby/references/events.md +387 -0
- data/skills/ratatui-ruby/references/frameworks.md +522 -0
- data/skills/ratatui-ruby/references/layout.md +423 -0
- data/skills/ratatui-ruby/references/styling.md +268 -0
- data/skills/ratatui-ruby/references/testing.md +433 -0
- data/skills/ratatui-ruby/references/widgets.md +532 -0
- data/skills/rspec/SKILL.md +340 -0
- data/skills/rspec/examples/core/basic_structure.rb +69 -0
- data/skills/rspec/examples/core/configuration.rb +126 -0
- data/skills/rspec/examples/core/hooks.rb +126 -0
- data/skills/rspec/examples/core/memoized_helpers.rb +139 -0
- data/skills/rspec/examples/core/metadata_filtering.rb +144 -0
- data/skills/rspec/examples/core/shared_examples.rb +145 -0
- data/skills/rspec/examples/factory_bot/associations.rb +314 -0
- data/skills/rspec/examples/factory_bot/build_strategies.rb +272 -0
- data/skills/rspec/examples/factory_bot/callbacks.rb +320 -0
- data/skills/rspec/examples/factory_bot/custom_construction.rb +328 -0
- data/skills/rspec/examples/factory_bot/factory_definition.rb +191 -0
- data/skills/rspec/examples/factory_bot/inheritance.rb +314 -0
- data/skills/rspec/examples/factory_bot/traits.rb +293 -0
- data/skills/rspec/examples/factory_bot/transients.rb +229 -0
- data/skills/rspec/examples/matchers/change.rb +115 -0
- data/skills/rspec/examples/matchers/collections.rb +154 -0
- data/skills/rspec/examples/matchers/comparisons.rb +79 -0
- data/skills/rspec/examples/matchers/composing.rb +155 -0
- data/skills/rspec/examples/matchers/custom_matchers.rb +197 -0
- data/skills/rspec/examples/matchers/equality.rb +58 -0
- data/skills/rspec/examples/matchers/errors.rb +136 -0
- data/skills/rspec/examples/matchers/output.rb +103 -0
- data/skills/rspec/examples/matchers/predicates.rb +87 -0
- data/skills/rspec/examples/matchers/truthiness.rb +101 -0
- data/skills/rspec/examples/matchers/types.rb +82 -0
- data/skills/rspec/examples/matchers/yield.rb +147 -0
- data/skills/rspec/examples/mocks/any_instance.rb +172 -0
- data/skills/rspec/examples/mocks/argument_matchers.rb +206 -0
- data/skills/rspec/examples/mocks/constants.rb +177 -0
- data/skills/rspec/examples/mocks/doubles.rb +139 -0
- data/skills/rspec/examples/mocks/expectations.rb +137 -0
- data/skills/rspec/examples/mocks/message_chains.rb +173 -0
- data/skills/rspec/examples/mocks/ordering.rb +144 -0
- data/skills/rspec/examples/mocks/receive_counts.rb +181 -0
- data/skills/rspec/examples/mocks/responses.rb +223 -0
- data/skills/rspec/examples/mocks/spies.rb +149 -0
- data/skills/rspec/examples/mocks/stubbing.rb +133 -0
- data/skills/rspec/examples/rails/channels.rb +250 -0
- data/skills/rspec/examples/rails/controller_specs.rb +302 -0
- data/skills/rspec/examples/rails/helper_specs.rb +245 -0
- data/skills/rspec/examples/rails/job_specs.rb +256 -0
- data/skills/rspec/examples/rails/mailer_specs.rb +228 -0
- data/skills/rspec/examples/rails/matchers.rb +374 -0
- data/skills/rspec/examples/rails/model_specs.rb +193 -0
- data/skills/rspec/examples/rails/request_specs.rb +275 -0
- data/skills/rspec/examples/rails/routing_specs.rb +276 -0
- data/skills/rspec/examples/rails/system_specs.rb +294 -0
- data/skills/rspec/examples/rails/transactions.rb +254 -0
- data/skills/rspec/examples/rails/view_specs.rb +252 -0
- data/skills/rspec/references/core.md +816 -0
- data/skills/rspec/references/factory_bot.md +641 -0
- data/skills/rspec/references/matchers.md +516 -0
- data/skills/rspec/references/mocks.md +381 -0
- data/skills/rspec/references/rails.md +528 -0
- data/templates/soul.md +40 -0
- data/workflows/commit.md +45 -0
- data/workflows/create_handoff.md +98 -0
- data/workflows/create_note.md +82 -0
- data/workflows/create_plan.md +457 -0
- data/workflows/decompose_ticket.md +109 -0
- data/workflows/feature.md +91 -0
- data/workflows/implement_plan.md +87 -0
- data/workflows/iterate_plan.md +247 -0
- data/workflows/research_codebase.md +210 -0
- data/workflows/resume_handoff.md +217 -0
- data/workflows/review_pr.md +320 -0
- data/workflows/thoughts_init.md +71 -0
- data/workflows/validate_plan.md +166 -0
- metadata +284 -2
- data/.mise.toml +0 -2
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: validate_plan
|
|
3
|
+
description: "Validate implementation against plan, verify success criteria, and identify issues."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Validate Plan
|
|
7
|
+
|
|
8
|
+
You are tasked with validating that an implementation plan was correctly executed, verifying all success criteria and identifying any deviations or issues.
|
|
9
|
+
|
|
10
|
+
## Initial Setup
|
|
11
|
+
|
|
12
|
+
When invoked:
|
|
13
|
+
1. **Determine context** - Are you in an existing conversation or starting fresh?
|
|
14
|
+
- If existing: Review what was implemented in this session
|
|
15
|
+
- If fresh: Need to discover what was done through git and codebase analysis
|
|
16
|
+
|
|
17
|
+
2. **Locate the plan**:
|
|
18
|
+
- If plan path provided, use it
|
|
19
|
+
- Otherwise, search recent commits for plan references or ask user
|
|
20
|
+
|
|
21
|
+
3. **Gather implementation evidence**:
|
|
22
|
+
```bash
|
|
23
|
+
# Check recent commits
|
|
24
|
+
git log --oneline -n 20
|
|
25
|
+
git diff HEAD~N..HEAD # Where N covers implementation commits
|
|
26
|
+
|
|
27
|
+
# Run comprehensive checks
|
|
28
|
+
cd $(git rev-parse --show-toplevel) && make check test
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Validation Process
|
|
32
|
+
|
|
33
|
+
### Step 1: Context Discovery
|
|
34
|
+
|
|
35
|
+
If starting fresh or need more context:
|
|
36
|
+
|
|
37
|
+
1. **Read the implementation plan** completely
|
|
38
|
+
2. **Identify what should have changed**:
|
|
39
|
+
- List all files that should be modified
|
|
40
|
+
- Note all success criteria (automated and manual)
|
|
41
|
+
- Identify key functionality to verify
|
|
42
|
+
|
|
43
|
+
3. **Spawn parallel research tasks** to discover implementation:
|
|
44
|
+
```
|
|
45
|
+
Task 1 - Verify database changes:
|
|
46
|
+
Research if migration [N] was added and schema changes match plan.
|
|
47
|
+
Check: migration files, schema version, table structure
|
|
48
|
+
Return: What was implemented vs what plan specified
|
|
49
|
+
|
|
50
|
+
Task 2 - Verify code changes:
|
|
51
|
+
Find all modified files related to [feature].
|
|
52
|
+
Compare actual changes to plan specifications.
|
|
53
|
+
Return: File-by-file comparison of planned vs actual
|
|
54
|
+
|
|
55
|
+
Task 3 - Verify test coverage:
|
|
56
|
+
Check if tests were added/modified as specified.
|
|
57
|
+
Run test commands and capture results.
|
|
58
|
+
Return: Test status and any missing coverage
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 2: Systematic Validation
|
|
62
|
+
|
|
63
|
+
For each phase in the plan:
|
|
64
|
+
|
|
65
|
+
1. **Check completion status**:
|
|
66
|
+
- Look for checkmarks in the plan (- [x])
|
|
67
|
+
- Verify the actual code matches claimed completion
|
|
68
|
+
|
|
69
|
+
2. **Run automated verification**:
|
|
70
|
+
- Execute each command from "Automated Verification"
|
|
71
|
+
- Document pass/fail status
|
|
72
|
+
- If failures, investigate root cause
|
|
73
|
+
|
|
74
|
+
3. **Assess manual criteria**:
|
|
75
|
+
- List what needs manual testing
|
|
76
|
+
- Provide clear steps for user verification
|
|
77
|
+
|
|
78
|
+
4. **Think deeply about edge cases**:
|
|
79
|
+
- Were error conditions handled?
|
|
80
|
+
- Are there missing validations?
|
|
81
|
+
- Could the implementation break existing functionality?
|
|
82
|
+
|
|
83
|
+
### Step 3: Generate Validation Report
|
|
84
|
+
|
|
85
|
+
Create comprehensive validation summary:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
## Validation Report: [Plan Name]
|
|
89
|
+
|
|
90
|
+
### Implementation Status
|
|
91
|
+
✓ Phase 1: [Name] - Fully implemented
|
|
92
|
+
✓ Phase 2: [Name] - Fully implemented
|
|
93
|
+
⚠️ Phase 3: [Name] - Partially implemented (see issues)
|
|
94
|
+
|
|
95
|
+
### Automated Verification Results
|
|
96
|
+
✓ Build passes: `make build`
|
|
97
|
+
✓ Tests pass: `make test`
|
|
98
|
+
✗ Linting issues: `make lint` (3 warnings)
|
|
99
|
+
|
|
100
|
+
### Code Review Findings
|
|
101
|
+
|
|
102
|
+
#### Matches Plan:
|
|
103
|
+
- Database migration correctly adds [table]
|
|
104
|
+
- API endpoints implement specified methods
|
|
105
|
+
- Error handling follows plan
|
|
106
|
+
|
|
107
|
+
#### Deviations from Plan:
|
|
108
|
+
- Used different variable names in [file:line]
|
|
109
|
+
- Added extra validation in [file:line] (improvement)
|
|
110
|
+
|
|
111
|
+
#### Potential Issues:
|
|
112
|
+
- Missing index on foreign key could impact performance
|
|
113
|
+
- No rollback handling in migration
|
|
114
|
+
|
|
115
|
+
### Manual Testing Required:
|
|
116
|
+
1. UI functionality:
|
|
117
|
+
- [ ] Verify [feature] appears correctly
|
|
118
|
+
- [ ] Test error states with invalid input
|
|
119
|
+
|
|
120
|
+
2. Integration:
|
|
121
|
+
- [ ] Confirm works with existing [component]
|
|
122
|
+
- [ ] Check performance with large datasets
|
|
123
|
+
|
|
124
|
+
### Recommendations:
|
|
125
|
+
- Address linting warnings before merge
|
|
126
|
+
- Consider adding integration test for [scenario]
|
|
127
|
+
- Document new API endpoints
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Working with Existing Context
|
|
131
|
+
|
|
132
|
+
If you were part of the implementation:
|
|
133
|
+
- Review the conversation history
|
|
134
|
+
- Check your todo list for what was completed
|
|
135
|
+
- Focus validation on work done in this session
|
|
136
|
+
- Be honest about any shortcuts or incomplete items
|
|
137
|
+
|
|
138
|
+
## Important Guidelines
|
|
139
|
+
|
|
140
|
+
1. **Be thorough but practical** - Focus on what matters
|
|
141
|
+
2. **Run all automated checks** - Don't skip verification commands
|
|
142
|
+
3. **Document everything** - Both successes and issues
|
|
143
|
+
4. **Think critically** - Question if the implementation truly solves the problem
|
|
144
|
+
5. **Consider maintenance** - Will this be maintainable long-term?
|
|
145
|
+
|
|
146
|
+
## Validation Checklist
|
|
147
|
+
|
|
148
|
+
Always verify:
|
|
149
|
+
- [ ] All phases marked complete are actually done
|
|
150
|
+
- [ ] Automated tests pass
|
|
151
|
+
- [ ] Code follows existing patterns
|
|
152
|
+
- [ ] No regressions introduced
|
|
153
|
+
- [ ] Error handling is robust
|
|
154
|
+
- [ ] Documentation updated if needed
|
|
155
|
+
- [ ] Manual test steps are clear
|
|
156
|
+
|
|
157
|
+
## Relationship to Other Commands
|
|
158
|
+
|
|
159
|
+
Recommended workflow:
|
|
160
|
+
1. `implement_plan` — Execute the implementation
|
|
161
|
+
2. `commit` — Create atomic commits for changes
|
|
162
|
+
3. `validate_plan` — Verify implementation correctness
|
|
163
|
+
|
|
164
|
+
The validation works best after commits are made, as it can analyze the git history to understand what was implemented.
|
|
165
|
+
|
|
166
|
+
Remember: Good validation catches issues before they reach production. Be constructive but thorough in identifying gaps or improvements.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: anima-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yevhenii Hurin
|
|
@@ -23,6 +23,20 @@ dependencies:
|
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '4.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: faraday
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.0'
|
|
26
40
|
- !ruby/object:Gem::Dependency
|
|
27
41
|
name: foreman
|
|
28
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -51,6 +65,20 @@ dependencies:
|
|
|
51
65
|
- - "~>"
|
|
52
66
|
- !ruby/object:Gem::Version
|
|
53
67
|
version: '0.24'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: mcp
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0.8'
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0.8'
|
|
54
82
|
- !ruby/object:Gem::Dependency
|
|
55
83
|
name: puma
|
|
56
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -135,6 +163,20 @@ dependencies:
|
|
|
135
163
|
- - "~>"
|
|
136
164
|
- !ruby/object:Gem::Version
|
|
137
165
|
version: '2.0'
|
|
166
|
+
- !ruby/object:Gem::Dependency
|
|
167
|
+
name: toml-rb
|
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - "~>"
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '4.0'
|
|
173
|
+
type: :runtime
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - "~>"
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '4.0'
|
|
138
180
|
- !ruby/object:Gem::Dependency
|
|
139
181
|
name: websocket-client-simple
|
|
140
182
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -156,7 +198,6 @@ executables:
|
|
|
156
198
|
extensions: []
|
|
157
199
|
extra_rdoc_files: []
|
|
158
200
|
files:
|
|
159
|
-
- ".mise.toml"
|
|
160
201
|
- ".reek.yml"
|
|
161
202
|
- CHANGELOG.md
|
|
162
203
|
- Gemfile
|
|
@@ -165,6 +206,11 @@ files:
|
|
|
165
206
|
- Procfile.dev
|
|
166
207
|
- README.md
|
|
167
208
|
- Rakefile
|
|
209
|
+
- agents/codebase-analyzer.md
|
|
210
|
+
- agents/codebase-pattern-finder.md
|
|
211
|
+
- agents/documentation-researcher.md
|
|
212
|
+
- agents/thoughts-analyzer.md
|
|
213
|
+
- agents/web-search-researcher.md
|
|
168
214
|
- anima-core.gemspec
|
|
169
215
|
- app/channels/application_cable/channel.rb
|
|
170
216
|
- app/channels/application_cable/connection.rb
|
|
@@ -178,11 +224,13 @@ files:
|
|
|
178
224
|
- app/decorators/tool_response_decorator.rb
|
|
179
225
|
- app/decorators/user_message_decorator.rb
|
|
180
226
|
- app/jobs/agent_request_job.rb
|
|
227
|
+
- app/jobs/analytical_brain_job.rb
|
|
181
228
|
- app/jobs/application_job.rb
|
|
182
229
|
- app/jobs/count_event_tokens_job.rb
|
|
183
230
|
- app/models/application_record.rb
|
|
184
231
|
- app/models/concerns/event/broadcasting.rb
|
|
185
232
|
- app/models/event.rb
|
|
233
|
+
- app/models/goal.rb
|
|
186
234
|
- app/models/session.rb
|
|
187
235
|
- bin/jobs
|
|
188
236
|
- bin/rails
|
|
@@ -213,14 +261,40 @@ files:
|
|
|
213
261
|
- db/migrate/20260312170000_add_view_mode_to_sessions.rb
|
|
214
262
|
- db/migrate/20260313010000_add_status_to_events.rb
|
|
215
263
|
- db/migrate/20260313020000_add_processing_to_sessions.rb
|
|
264
|
+
- db/migrate/20260314075248_add_subagent_support_to_sessions.rb
|
|
265
|
+
- db/migrate/20260314112417_add_granted_tools_to_sessions.rb
|
|
266
|
+
- db/migrate/20260314140000_add_name_to_sessions.rb
|
|
267
|
+
- db/migrate/20260314150000_add_viewport_event_ids_to_sessions.rb
|
|
268
|
+
- db/migrate/20260315100000_add_active_skills_to_sessions.rb
|
|
269
|
+
- db/migrate/20260315140843_create_goals.rb
|
|
270
|
+
- db/migrate/20260315144837_add_completed_at_to_goals.rb
|
|
271
|
+
- db/migrate/20260315191105_add_active_workflow_to_sessions.rb
|
|
216
272
|
- db/queue_schema.rb
|
|
217
273
|
- db/seeds.rb
|
|
218
274
|
- exe/anima
|
|
219
275
|
- lib/agent_loop.rb
|
|
276
|
+
- lib/agents/definition.rb
|
|
277
|
+
- lib/agents/registry.rb
|
|
278
|
+
- lib/analytical_brain.rb
|
|
279
|
+
- lib/analytical_brain/runner.rb
|
|
280
|
+
- lib/analytical_brain/tools/activate_skill.rb
|
|
281
|
+
- lib/analytical_brain/tools/deactivate_skill.rb
|
|
282
|
+
- lib/analytical_brain/tools/deactivate_workflow.rb
|
|
283
|
+
- lib/analytical_brain/tools/everything_is_ready.rb
|
|
284
|
+
- lib/analytical_brain/tools/finish_goal.rb
|
|
285
|
+
- lib/analytical_brain/tools/read_workflow.rb
|
|
286
|
+
- lib/analytical_brain/tools/rename_session.rb
|
|
287
|
+
- lib/analytical_brain/tools/set_goal.rb
|
|
288
|
+
- lib/analytical_brain/tools/update_goal.rb
|
|
220
289
|
- lib/anima.rb
|
|
221
290
|
- lib/anima/cli.rb
|
|
291
|
+
- lib/anima/cli/mcp.rb
|
|
292
|
+
- lib/anima/cli/mcp/secrets.rb
|
|
222
293
|
- lib/anima/installer.rb
|
|
294
|
+
- lib/anima/settings.rb
|
|
223
295
|
- lib/anima/version.rb
|
|
296
|
+
- lib/credential_store.rb
|
|
297
|
+
- lib/environment_probe.rb
|
|
224
298
|
- lib/events/agent_message.rb
|
|
225
299
|
- lib/events/base.rb
|
|
226
300
|
- lib/events/bus.rb
|
|
@@ -232,13 +306,26 @@ files:
|
|
|
232
306
|
- lib/events/tool_response.rb
|
|
233
307
|
- lib/events/user_message.rb
|
|
234
308
|
- lib/llm/client.rb
|
|
309
|
+
- lib/mcp/client_manager.rb
|
|
310
|
+
- lib/mcp/config.rb
|
|
311
|
+
- lib/mcp/health_check.rb
|
|
312
|
+
- lib/mcp/secrets.rb
|
|
313
|
+
- lib/mcp/stdio_transport.rb
|
|
235
314
|
- lib/providers/anthropic.rb
|
|
236
315
|
- lib/shell_session.rb
|
|
316
|
+
- lib/skills/definition.rb
|
|
317
|
+
- lib/skills/registry.rb
|
|
237
318
|
- lib/tools/base.rb
|
|
238
319
|
- lib/tools/bash.rb
|
|
239
320
|
- lib/tools/edit.rb
|
|
321
|
+
- lib/tools/mcp_tool.rb
|
|
240
322
|
- lib/tools/read.rb
|
|
241
323
|
- lib/tools/registry.rb
|
|
324
|
+
- lib/tools/request_feature.rb
|
|
325
|
+
- lib/tools/return_result.rb
|
|
326
|
+
- lib/tools/spawn_specialist.rb
|
|
327
|
+
- lib/tools/spawn_subagent.rb
|
|
328
|
+
- lib/tools/subagent_prompts.rb
|
|
242
329
|
- lib/tools/web_get.rb
|
|
243
330
|
- lib/tools/write.rb
|
|
244
331
|
- lib/tui/app.rb
|
|
@@ -246,6 +333,201 @@ files:
|
|
|
246
333
|
- lib/tui/input_buffer.rb
|
|
247
334
|
- lib/tui/message_store.rb
|
|
248
335
|
- lib/tui/screens/chat.rb
|
|
336
|
+
- lib/workflows/definition.rb
|
|
337
|
+
- lib/workflows/registry.rb
|
|
338
|
+
- skills/activerecord/SKILL.md
|
|
339
|
+
- skills/activerecord/examples/associations/association_extensions.rb
|
|
340
|
+
- skills/activerecord/examples/associations/basic_associations.rb
|
|
341
|
+
- skills/activerecord/examples/associations/counter_caches.rb
|
|
342
|
+
- skills/activerecord/examples/associations/polymorphic_associations.rb
|
|
343
|
+
- skills/activerecord/examples/associations/self_referential.rb
|
|
344
|
+
- skills/activerecord/examples/associations/through_associations.rb
|
|
345
|
+
- skills/activerecord/examples/basics/crud_operations.rb
|
|
346
|
+
- skills/activerecord/examples/basics/dirty_tracking.rb
|
|
347
|
+
- skills/activerecord/examples/basics/inheritance.rb
|
|
348
|
+
- skills/activerecord/examples/basics/type_casting.rb
|
|
349
|
+
- skills/activerecord/examples/callbacks/alternatives_to_callbacks.rb
|
|
350
|
+
- skills/activerecord/examples/callbacks/conditional_callbacks.rb
|
|
351
|
+
- skills/activerecord/examples/callbacks/lifecycle_callbacks.rb
|
|
352
|
+
- skills/activerecord/examples/callbacks/transaction_callbacks.rb
|
|
353
|
+
- skills/activerecord/examples/migrations/indexes_and_constraints.rb
|
|
354
|
+
- skills/activerecord/examples/migrations/reversible_patterns.rb
|
|
355
|
+
- skills/activerecord/examples/migrations/safe_patterns.rb
|
|
356
|
+
- skills/activerecord/examples/migrations/schema_changes.rb
|
|
357
|
+
- skills/activerecord/examples/querying/batch_processing.rb
|
|
358
|
+
- skills/activerecord/examples/querying/eager_loading.rb
|
|
359
|
+
- skills/activerecord/examples/querying/finder_methods.rb
|
|
360
|
+
- skills/activerecord/examples/querying/optimization.rb
|
|
361
|
+
- skills/activerecord/examples/querying/scopes.rb
|
|
362
|
+
- skills/activerecord/examples/validations/built_in_validators.rb
|
|
363
|
+
- skills/activerecord/examples/validations/conditional_validations.rb
|
|
364
|
+
- skills/activerecord/examples/validations/custom_validators.rb
|
|
365
|
+
- skills/activerecord/examples/validations/database_constraints.rb
|
|
366
|
+
- skills/activerecord/examples/validations/validation_contexts.rb
|
|
367
|
+
- skills/activerecord/references/associations.md
|
|
368
|
+
- skills/activerecord/references/basics.md
|
|
369
|
+
- skills/activerecord/references/callbacks.md
|
|
370
|
+
- skills/activerecord/references/migrations.md
|
|
371
|
+
- skills/activerecord/references/querying.md
|
|
372
|
+
- skills/activerecord/references/validations.md
|
|
373
|
+
- skills/dragonruby/SKILL.md
|
|
374
|
+
- skills/dragonruby/examples/audio/audio_events.rb
|
|
375
|
+
- skills/dragonruby/examples/audio/background_music.rb
|
|
376
|
+
- skills/dragonruby/examples/audio/crossfade.rb
|
|
377
|
+
- skills/dragonruby/examples/audio/music_controls.rb
|
|
378
|
+
- skills/dragonruby/examples/audio/sound_effects.rb
|
|
379
|
+
- skills/dragonruby/examples/core/coordinate_system.rb
|
|
380
|
+
- skills/dragonruby/examples/core/hello_world.rb
|
|
381
|
+
- skills/dragonruby/examples/core/labels.rb
|
|
382
|
+
- skills/dragonruby/examples/core/sprites.rb
|
|
383
|
+
- skills/dragonruby/examples/core/state_management.rb
|
|
384
|
+
- skills/dragonruby/examples/distribution/background_pause.rb
|
|
385
|
+
- skills/dragonruby/examples/distribution/build_workflow.sh
|
|
386
|
+
- skills/dragonruby/examples/distribution/cvars_production.txt
|
|
387
|
+
- skills/dragonruby/examples/distribution/game_metadata_hd.txt
|
|
388
|
+
- skills/dragonruby/examples/distribution/game_metadata_minimal.txt
|
|
389
|
+
- skills/dragonruby/examples/distribution/game_metadata_mobile.txt
|
|
390
|
+
- skills/dragonruby/examples/distribution/platform_detection.rb
|
|
391
|
+
- skills/dragonruby/examples/distribution/steam_metadata.txt
|
|
392
|
+
- skills/dragonruby/examples/entities/collision_detection.rb
|
|
393
|
+
- skills/dragonruby/examples/entities/entity_lifecycle.rb
|
|
394
|
+
- skills/dragonruby/examples/entities/entity_storage.rb
|
|
395
|
+
- skills/dragonruby/examples/entities/factory_methods.rb
|
|
396
|
+
- skills/dragonruby/examples/entities/random_spawning.rb
|
|
397
|
+
- skills/dragonruby/examples/game-logic/reset_patterns.rb
|
|
398
|
+
- skills/dragonruby/examples/game-logic/save_load.rb
|
|
399
|
+
- skills/dragonruby/examples/game-logic/scoring.rb
|
|
400
|
+
- skills/dragonruby/examples/game-logic/state_transitions.rb
|
|
401
|
+
- skills/dragonruby/examples/game-logic/timers.rb
|
|
402
|
+
- skills/dragonruby/examples/input/action_triggers.rb
|
|
403
|
+
- skills/dragonruby/examples/input/analog_movement.rb
|
|
404
|
+
- skills/dragonruby/examples/input/controller_input.rb
|
|
405
|
+
- skills/dragonruby/examples/input/directional_input.rb
|
|
406
|
+
- skills/dragonruby/examples/input/keyboard_input.rb
|
|
407
|
+
- skills/dragonruby/examples/input/mouse_click.rb
|
|
408
|
+
- skills/dragonruby/examples/input/movement_with_bounds.rb
|
|
409
|
+
- skills/dragonruby/examples/input/normalized_movement.rb
|
|
410
|
+
- skills/dragonruby/examples/rendering/frame_animation.rb
|
|
411
|
+
- skills/dragonruby/examples/rendering/labels.rb
|
|
412
|
+
- skills/dragonruby/examples/rendering/layering.rb
|
|
413
|
+
- skills/dragonruby/examples/rendering/solids.rb
|
|
414
|
+
- skills/dragonruby/examples/rendering/sprites.rb
|
|
415
|
+
- skills/dragonruby/examples/rendering/spritesheet_animation.rb
|
|
416
|
+
- skills/dragonruby/examples/scenes/case_dispatch.rb
|
|
417
|
+
- skills/dragonruby/examples/scenes/class_based.rb
|
|
418
|
+
- skills/dragonruby/examples/scenes/pause_overlay.rb
|
|
419
|
+
- skills/dragonruby/examples/scenes/safe_transitions.rb
|
|
420
|
+
- skills/dragonruby/examples/scenes/scene_transitions.rb
|
|
421
|
+
- skills/dragonruby/examples/scenes/send_dispatch.rb
|
|
422
|
+
- skills/dragonruby/references/audio.md
|
|
423
|
+
- skills/dragonruby/references/core.md
|
|
424
|
+
- skills/dragonruby/references/distribution.md
|
|
425
|
+
- skills/dragonruby/references/entities.md
|
|
426
|
+
- skills/dragonruby/references/game-logic/persistence.md
|
|
427
|
+
- skills/dragonruby/references/game-logic/state.md
|
|
428
|
+
- skills/dragonruby/references/input.md
|
|
429
|
+
- skills/dragonruby/references/rendering/animation.md
|
|
430
|
+
- skills/dragonruby/references/rendering/primitives.md
|
|
431
|
+
- skills/dragonruby/references/scenes.md
|
|
432
|
+
- skills/draper-decorators/SKILL.md
|
|
433
|
+
- skills/draper-decorators/examples/application_decorator.rb
|
|
434
|
+
- skills/draper-decorators/examples/decorator_spec.rb
|
|
435
|
+
- skills/draper-decorators/examples/model_decorator.rb
|
|
436
|
+
- skills/draper-decorators/references/anti-patterns.md
|
|
437
|
+
- skills/draper-decorators/references/patterns.md
|
|
438
|
+
- skills/draper-decorators/references/testing.md
|
|
439
|
+
- skills/gh-issue.md
|
|
440
|
+
- skills/mcp-server/SKILL.md
|
|
441
|
+
- skills/mcp-server/examples/dynamic_tools.rb
|
|
442
|
+
- skills/mcp-server/examples/file_manager_tool.rb
|
|
443
|
+
- skills/mcp-server/examples/http_client.rb
|
|
444
|
+
- skills/mcp-server/examples/http_server.rb
|
|
445
|
+
- skills/mcp-server/examples/rails_integration.rb
|
|
446
|
+
- skills/mcp-server/examples/stdio_server.rb
|
|
447
|
+
- skills/mcp-server/examples/streaming_client.rb
|
|
448
|
+
- skills/mcp-server/references/gotchas.md
|
|
449
|
+
- skills/mcp-server/references/prompts.md
|
|
450
|
+
- skills/mcp-server/references/resources.md
|
|
451
|
+
- skills/mcp-server/references/server.md
|
|
452
|
+
- skills/mcp-server/references/tools.md
|
|
453
|
+
- skills/mcp-server/references/transport.md
|
|
454
|
+
- skills/ratatui-ruby/SKILL.md
|
|
455
|
+
- skills/ratatui-ruby/references/core-concepts.md
|
|
456
|
+
- skills/ratatui-ruby/references/events.md
|
|
457
|
+
- skills/ratatui-ruby/references/frameworks.md
|
|
458
|
+
- skills/ratatui-ruby/references/layout.md
|
|
459
|
+
- skills/ratatui-ruby/references/styling.md
|
|
460
|
+
- skills/ratatui-ruby/references/testing.md
|
|
461
|
+
- skills/ratatui-ruby/references/widgets.md
|
|
462
|
+
- skills/rspec/SKILL.md
|
|
463
|
+
- skills/rspec/examples/core/basic_structure.rb
|
|
464
|
+
- skills/rspec/examples/core/configuration.rb
|
|
465
|
+
- skills/rspec/examples/core/hooks.rb
|
|
466
|
+
- skills/rspec/examples/core/memoized_helpers.rb
|
|
467
|
+
- skills/rspec/examples/core/metadata_filtering.rb
|
|
468
|
+
- skills/rspec/examples/core/shared_examples.rb
|
|
469
|
+
- skills/rspec/examples/factory_bot/associations.rb
|
|
470
|
+
- skills/rspec/examples/factory_bot/build_strategies.rb
|
|
471
|
+
- skills/rspec/examples/factory_bot/callbacks.rb
|
|
472
|
+
- skills/rspec/examples/factory_bot/custom_construction.rb
|
|
473
|
+
- skills/rspec/examples/factory_bot/factory_definition.rb
|
|
474
|
+
- skills/rspec/examples/factory_bot/inheritance.rb
|
|
475
|
+
- skills/rspec/examples/factory_bot/traits.rb
|
|
476
|
+
- skills/rspec/examples/factory_bot/transients.rb
|
|
477
|
+
- skills/rspec/examples/matchers/change.rb
|
|
478
|
+
- skills/rspec/examples/matchers/collections.rb
|
|
479
|
+
- skills/rspec/examples/matchers/comparisons.rb
|
|
480
|
+
- skills/rspec/examples/matchers/composing.rb
|
|
481
|
+
- skills/rspec/examples/matchers/custom_matchers.rb
|
|
482
|
+
- skills/rspec/examples/matchers/equality.rb
|
|
483
|
+
- skills/rspec/examples/matchers/errors.rb
|
|
484
|
+
- skills/rspec/examples/matchers/output.rb
|
|
485
|
+
- skills/rspec/examples/matchers/predicates.rb
|
|
486
|
+
- skills/rspec/examples/matchers/truthiness.rb
|
|
487
|
+
- skills/rspec/examples/matchers/types.rb
|
|
488
|
+
- skills/rspec/examples/matchers/yield.rb
|
|
489
|
+
- skills/rspec/examples/mocks/any_instance.rb
|
|
490
|
+
- skills/rspec/examples/mocks/argument_matchers.rb
|
|
491
|
+
- skills/rspec/examples/mocks/constants.rb
|
|
492
|
+
- skills/rspec/examples/mocks/doubles.rb
|
|
493
|
+
- skills/rspec/examples/mocks/expectations.rb
|
|
494
|
+
- skills/rspec/examples/mocks/message_chains.rb
|
|
495
|
+
- skills/rspec/examples/mocks/ordering.rb
|
|
496
|
+
- skills/rspec/examples/mocks/receive_counts.rb
|
|
497
|
+
- skills/rspec/examples/mocks/responses.rb
|
|
498
|
+
- skills/rspec/examples/mocks/spies.rb
|
|
499
|
+
- skills/rspec/examples/mocks/stubbing.rb
|
|
500
|
+
- skills/rspec/examples/rails/channels.rb
|
|
501
|
+
- skills/rspec/examples/rails/controller_specs.rb
|
|
502
|
+
- skills/rspec/examples/rails/helper_specs.rb
|
|
503
|
+
- skills/rspec/examples/rails/job_specs.rb
|
|
504
|
+
- skills/rspec/examples/rails/mailer_specs.rb
|
|
505
|
+
- skills/rspec/examples/rails/matchers.rb
|
|
506
|
+
- skills/rspec/examples/rails/model_specs.rb
|
|
507
|
+
- skills/rspec/examples/rails/request_specs.rb
|
|
508
|
+
- skills/rspec/examples/rails/routing_specs.rb
|
|
509
|
+
- skills/rspec/examples/rails/system_specs.rb
|
|
510
|
+
- skills/rspec/examples/rails/transactions.rb
|
|
511
|
+
- skills/rspec/examples/rails/view_specs.rb
|
|
512
|
+
- skills/rspec/references/core.md
|
|
513
|
+
- skills/rspec/references/factory_bot.md
|
|
514
|
+
- skills/rspec/references/matchers.md
|
|
515
|
+
- skills/rspec/references/mocks.md
|
|
516
|
+
- skills/rspec/references/rails.md
|
|
517
|
+
- templates/soul.md
|
|
518
|
+
- workflows/commit.md
|
|
519
|
+
- workflows/create_handoff.md
|
|
520
|
+
- workflows/create_note.md
|
|
521
|
+
- workflows/create_plan.md
|
|
522
|
+
- workflows/decompose_ticket.md
|
|
523
|
+
- workflows/feature.md
|
|
524
|
+
- workflows/implement_plan.md
|
|
525
|
+
- workflows/iterate_plan.md
|
|
526
|
+
- workflows/research_codebase.md
|
|
527
|
+
- workflows/resume_handoff.md
|
|
528
|
+
- workflows/review_pr.md
|
|
529
|
+
- workflows/thoughts_init.md
|
|
530
|
+
- workflows/validate_plan.md
|
|
249
531
|
homepage: https://github.com/hoblin/anima
|
|
250
532
|
licenses:
|
|
251
533
|
- MIT
|
data/.mise.toml
DELETED