anima-core 0.3.0 → 1.0.0
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 +3 -0
- 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 +168 -0
- 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 -1
|
@@ -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.0
|
|
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
|
|
@@ -165,6 +207,11 @@ files:
|
|
|
165
207
|
- Procfile.dev
|
|
166
208
|
- README.md
|
|
167
209
|
- Rakefile
|
|
210
|
+
- agents/codebase-analyzer.md
|
|
211
|
+
- agents/codebase-pattern-finder.md
|
|
212
|
+
- agents/documentation-researcher.md
|
|
213
|
+
- agents/thoughts-analyzer.md
|
|
214
|
+
- agents/web-search-researcher.md
|
|
168
215
|
- anima-core.gemspec
|
|
169
216
|
- app/channels/application_cable/channel.rb
|
|
170
217
|
- app/channels/application_cable/connection.rb
|
|
@@ -178,11 +225,13 @@ files:
|
|
|
178
225
|
- app/decorators/tool_response_decorator.rb
|
|
179
226
|
- app/decorators/user_message_decorator.rb
|
|
180
227
|
- app/jobs/agent_request_job.rb
|
|
228
|
+
- app/jobs/analytical_brain_job.rb
|
|
181
229
|
- app/jobs/application_job.rb
|
|
182
230
|
- app/jobs/count_event_tokens_job.rb
|
|
183
231
|
- app/models/application_record.rb
|
|
184
232
|
- app/models/concerns/event/broadcasting.rb
|
|
185
233
|
- app/models/event.rb
|
|
234
|
+
- app/models/goal.rb
|
|
186
235
|
- app/models/session.rb
|
|
187
236
|
- bin/jobs
|
|
188
237
|
- bin/rails
|
|
@@ -213,14 +262,40 @@ files:
|
|
|
213
262
|
- db/migrate/20260312170000_add_view_mode_to_sessions.rb
|
|
214
263
|
- db/migrate/20260313010000_add_status_to_events.rb
|
|
215
264
|
- db/migrate/20260313020000_add_processing_to_sessions.rb
|
|
265
|
+
- db/migrate/20260314075248_add_subagent_support_to_sessions.rb
|
|
266
|
+
- db/migrate/20260314112417_add_granted_tools_to_sessions.rb
|
|
267
|
+
- db/migrate/20260314140000_add_name_to_sessions.rb
|
|
268
|
+
- db/migrate/20260314150000_add_viewport_event_ids_to_sessions.rb
|
|
269
|
+
- db/migrate/20260315100000_add_active_skills_to_sessions.rb
|
|
270
|
+
- db/migrate/20260315140843_create_goals.rb
|
|
271
|
+
- db/migrate/20260315144837_add_completed_at_to_goals.rb
|
|
272
|
+
- db/migrate/20260315191105_add_active_workflow_to_sessions.rb
|
|
216
273
|
- db/queue_schema.rb
|
|
217
274
|
- db/seeds.rb
|
|
218
275
|
- exe/anima
|
|
219
276
|
- lib/agent_loop.rb
|
|
277
|
+
- lib/agents/definition.rb
|
|
278
|
+
- lib/agents/registry.rb
|
|
279
|
+
- lib/analytical_brain.rb
|
|
280
|
+
- lib/analytical_brain/runner.rb
|
|
281
|
+
- lib/analytical_brain/tools/activate_skill.rb
|
|
282
|
+
- lib/analytical_brain/tools/deactivate_skill.rb
|
|
283
|
+
- lib/analytical_brain/tools/deactivate_workflow.rb
|
|
284
|
+
- lib/analytical_brain/tools/everything_is_ready.rb
|
|
285
|
+
- lib/analytical_brain/tools/finish_goal.rb
|
|
286
|
+
- lib/analytical_brain/tools/read_workflow.rb
|
|
287
|
+
- lib/analytical_brain/tools/rename_session.rb
|
|
288
|
+
- lib/analytical_brain/tools/set_goal.rb
|
|
289
|
+
- lib/analytical_brain/tools/update_goal.rb
|
|
220
290
|
- lib/anima.rb
|
|
221
291
|
- lib/anima/cli.rb
|
|
292
|
+
- lib/anima/cli/mcp.rb
|
|
293
|
+
- lib/anima/cli/mcp/secrets.rb
|
|
222
294
|
- lib/anima/installer.rb
|
|
295
|
+
- lib/anima/settings.rb
|
|
223
296
|
- lib/anima/version.rb
|
|
297
|
+
- lib/credential_store.rb
|
|
298
|
+
- lib/environment_probe.rb
|
|
224
299
|
- lib/events/agent_message.rb
|
|
225
300
|
- lib/events/base.rb
|
|
226
301
|
- lib/events/bus.rb
|
|
@@ -232,13 +307,26 @@ files:
|
|
|
232
307
|
- lib/events/tool_response.rb
|
|
233
308
|
- lib/events/user_message.rb
|
|
234
309
|
- lib/llm/client.rb
|
|
310
|
+
- lib/mcp/client_manager.rb
|
|
311
|
+
- lib/mcp/config.rb
|
|
312
|
+
- lib/mcp/health_check.rb
|
|
313
|
+
- lib/mcp/secrets.rb
|
|
314
|
+
- lib/mcp/stdio_transport.rb
|
|
235
315
|
- lib/providers/anthropic.rb
|
|
236
316
|
- lib/shell_session.rb
|
|
317
|
+
- lib/skills/definition.rb
|
|
318
|
+
- lib/skills/registry.rb
|
|
237
319
|
- lib/tools/base.rb
|
|
238
320
|
- lib/tools/bash.rb
|
|
239
321
|
- lib/tools/edit.rb
|
|
322
|
+
- lib/tools/mcp_tool.rb
|
|
240
323
|
- lib/tools/read.rb
|
|
241
324
|
- lib/tools/registry.rb
|
|
325
|
+
- lib/tools/request_feature.rb
|
|
326
|
+
- lib/tools/return_result.rb
|
|
327
|
+
- lib/tools/spawn_specialist.rb
|
|
328
|
+
- lib/tools/spawn_subagent.rb
|
|
329
|
+
- lib/tools/subagent_prompts.rb
|
|
242
330
|
- lib/tools/web_get.rb
|
|
243
331
|
- lib/tools/write.rb
|
|
244
332
|
- lib/tui/app.rb
|
|
@@ -246,6 +334,201 @@ files:
|
|
|
246
334
|
- lib/tui/input_buffer.rb
|
|
247
335
|
- lib/tui/message_store.rb
|
|
248
336
|
- lib/tui/screens/chat.rb
|
|
337
|
+
- lib/workflows/definition.rb
|
|
338
|
+
- lib/workflows/registry.rb
|
|
339
|
+
- skills/activerecord/SKILL.md
|
|
340
|
+
- skills/activerecord/examples/associations/association_extensions.rb
|
|
341
|
+
- skills/activerecord/examples/associations/basic_associations.rb
|
|
342
|
+
- skills/activerecord/examples/associations/counter_caches.rb
|
|
343
|
+
- skills/activerecord/examples/associations/polymorphic_associations.rb
|
|
344
|
+
- skills/activerecord/examples/associations/self_referential.rb
|
|
345
|
+
- skills/activerecord/examples/associations/through_associations.rb
|
|
346
|
+
- skills/activerecord/examples/basics/crud_operations.rb
|
|
347
|
+
- skills/activerecord/examples/basics/dirty_tracking.rb
|
|
348
|
+
- skills/activerecord/examples/basics/inheritance.rb
|
|
349
|
+
- skills/activerecord/examples/basics/type_casting.rb
|
|
350
|
+
- skills/activerecord/examples/callbacks/alternatives_to_callbacks.rb
|
|
351
|
+
- skills/activerecord/examples/callbacks/conditional_callbacks.rb
|
|
352
|
+
- skills/activerecord/examples/callbacks/lifecycle_callbacks.rb
|
|
353
|
+
- skills/activerecord/examples/callbacks/transaction_callbacks.rb
|
|
354
|
+
- skills/activerecord/examples/migrations/indexes_and_constraints.rb
|
|
355
|
+
- skills/activerecord/examples/migrations/reversible_patterns.rb
|
|
356
|
+
- skills/activerecord/examples/migrations/safe_patterns.rb
|
|
357
|
+
- skills/activerecord/examples/migrations/schema_changes.rb
|
|
358
|
+
- skills/activerecord/examples/querying/batch_processing.rb
|
|
359
|
+
- skills/activerecord/examples/querying/eager_loading.rb
|
|
360
|
+
- skills/activerecord/examples/querying/finder_methods.rb
|
|
361
|
+
- skills/activerecord/examples/querying/optimization.rb
|
|
362
|
+
- skills/activerecord/examples/querying/scopes.rb
|
|
363
|
+
- skills/activerecord/examples/validations/built_in_validators.rb
|
|
364
|
+
- skills/activerecord/examples/validations/conditional_validations.rb
|
|
365
|
+
- skills/activerecord/examples/validations/custom_validators.rb
|
|
366
|
+
- skills/activerecord/examples/validations/database_constraints.rb
|
|
367
|
+
- skills/activerecord/examples/validations/validation_contexts.rb
|
|
368
|
+
- skills/activerecord/references/associations.md
|
|
369
|
+
- skills/activerecord/references/basics.md
|
|
370
|
+
- skills/activerecord/references/callbacks.md
|
|
371
|
+
- skills/activerecord/references/migrations.md
|
|
372
|
+
- skills/activerecord/references/querying.md
|
|
373
|
+
- skills/activerecord/references/validations.md
|
|
374
|
+
- skills/dragonruby/SKILL.md
|
|
375
|
+
- skills/dragonruby/examples/audio/audio_events.rb
|
|
376
|
+
- skills/dragonruby/examples/audio/background_music.rb
|
|
377
|
+
- skills/dragonruby/examples/audio/crossfade.rb
|
|
378
|
+
- skills/dragonruby/examples/audio/music_controls.rb
|
|
379
|
+
- skills/dragonruby/examples/audio/sound_effects.rb
|
|
380
|
+
- skills/dragonruby/examples/core/coordinate_system.rb
|
|
381
|
+
- skills/dragonruby/examples/core/hello_world.rb
|
|
382
|
+
- skills/dragonruby/examples/core/labels.rb
|
|
383
|
+
- skills/dragonruby/examples/core/sprites.rb
|
|
384
|
+
- skills/dragonruby/examples/core/state_management.rb
|
|
385
|
+
- skills/dragonruby/examples/distribution/background_pause.rb
|
|
386
|
+
- skills/dragonruby/examples/distribution/build_workflow.sh
|
|
387
|
+
- skills/dragonruby/examples/distribution/cvars_production.txt
|
|
388
|
+
- skills/dragonruby/examples/distribution/game_metadata_hd.txt
|
|
389
|
+
- skills/dragonruby/examples/distribution/game_metadata_minimal.txt
|
|
390
|
+
- skills/dragonruby/examples/distribution/game_metadata_mobile.txt
|
|
391
|
+
- skills/dragonruby/examples/distribution/platform_detection.rb
|
|
392
|
+
- skills/dragonruby/examples/distribution/steam_metadata.txt
|
|
393
|
+
- skills/dragonruby/examples/entities/collision_detection.rb
|
|
394
|
+
- skills/dragonruby/examples/entities/entity_lifecycle.rb
|
|
395
|
+
- skills/dragonruby/examples/entities/entity_storage.rb
|
|
396
|
+
- skills/dragonruby/examples/entities/factory_methods.rb
|
|
397
|
+
- skills/dragonruby/examples/entities/random_spawning.rb
|
|
398
|
+
- skills/dragonruby/examples/game-logic/reset_patterns.rb
|
|
399
|
+
- skills/dragonruby/examples/game-logic/save_load.rb
|
|
400
|
+
- skills/dragonruby/examples/game-logic/scoring.rb
|
|
401
|
+
- skills/dragonruby/examples/game-logic/state_transitions.rb
|
|
402
|
+
- skills/dragonruby/examples/game-logic/timers.rb
|
|
403
|
+
- skills/dragonruby/examples/input/action_triggers.rb
|
|
404
|
+
- skills/dragonruby/examples/input/analog_movement.rb
|
|
405
|
+
- skills/dragonruby/examples/input/controller_input.rb
|
|
406
|
+
- skills/dragonruby/examples/input/directional_input.rb
|
|
407
|
+
- skills/dragonruby/examples/input/keyboard_input.rb
|
|
408
|
+
- skills/dragonruby/examples/input/mouse_click.rb
|
|
409
|
+
- skills/dragonruby/examples/input/movement_with_bounds.rb
|
|
410
|
+
- skills/dragonruby/examples/input/normalized_movement.rb
|
|
411
|
+
- skills/dragonruby/examples/rendering/frame_animation.rb
|
|
412
|
+
- skills/dragonruby/examples/rendering/labels.rb
|
|
413
|
+
- skills/dragonruby/examples/rendering/layering.rb
|
|
414
|
+
- skills/dragonruby/examples/rendering/solids.rb
|
|
415
|
+
- skills/dragonruby/examples/rendering/sprites.rb
|
|
416
|
+
- skills/dragonruby/examples/rendering/spritesheet_animation.rb
|
|
417
|
+
- skills/dragonruby/examples/scenes/case_dispatch.rb
|
|
418
|
+
- skills/dragonruby/examples/scenes/class_based.rb
|
|
419
|
+
- skills/dragonruby/examples/scenes/pause_overlay.rb
|
|
420
|
+
- skills/dragonruby/examples/scenes/safe_transitions.rb
|
|
421
|
+
- skills/dragonruby/examples/scenes/scene_transitions.rb
|
|
422
|
+
- skills/dragonruby/examples/scenes/send_dispatch.rb
|
|
423
|
+
- skills/dragonruby/references/audio.md
|
|
424
|
+
- skills/dragonruby/references/core.md
|
|
425
|
+
- skills/dragonruby/references/distribution.md
|
|
426
|
+
- skills/dragonruby/references/entities.md
|
|
427
|
+
- skills/dragonruby/references/game-logic/persistence.md
|
|
428
|
+
- skills/dragonruby/references/game-logic/state.md
|
|
429
|
+
- skills/dragonruby/references/input.md
|
|
430
|
+
- skills/dragonruby/references/rendering/animation.md
|
|
431
|
+
- skills/dragonruby/references/rendering/primitives.md
|
|
432
|
+
- skills/dragonruby/references/scenes.md
|
|
433
|
+
- skills/draper-decorators/SKILL.md
|
|
434
|
+
- skills/draper-decorators/examples/application_decorator.rb
|
|
435
|
+
- skills/draper-decorators/examples/decorator_spec.rb
|
|
436
|
+
- skills/draper-decorators/examples/model_decorator.rb
|
|
437
|
+
- skills/draper-decorators/references/anti-patterns.md
|
|
438
|
+
- skills/draper-decorators/references/patterns.md
|
|
439
|
+
- skills/draper-decorators/references/testing.md
|
|
440
|
+
- skills/gh-issue.md
|
|
441
|
+
- skills/mcp-server/SKILL.md
|
|
442
|
+
- skills/mcp-server/examples/dynamic_tools.rb
|
|
443
|
+
- skills/mcp-server/examples/file_manager_tool.rb
|
|
444
|
+
- skills/mcp-server/examples/http_client.rb
|
|
445
|
+
- skills/mcp-server/examples/http_server.rb
|
|
446
|
+
- skills/mcp-server/examples/rails_integration.rb
|
|
447
|
+
- skills/mcp-server/examples/stdio_server.rb
|
|
448
|
+
- skills/mcp-server/examples/streaming_client.rb
|
|
449
|
+
- skills/mcp-server/references/gotchas.md
|
|
450
|
+
- skills/mcp-server/references/prompts.md
|
|
451
|
+
- skills/mcp-server/references/resources.md
|
|
452
|
+
- skills/mcp-server/references/server.md
|
|
453
|
+
- skills/mcp-server/references/tools.md
|
|
454
|
+
- skills/mcp-server/references/transport.md
|
|
455
|
+
- skills/ratatui-ruby/SKILL.md
|
|
456
|
+
- skills/ratatui-ruby/references/core-concepts.md
|
|
457
|
+
- skills/ratatui-ruby/references/events.md
|
|
458
|
+
- skills/ratatui-ruby/references/frameworks.md
|
|
459
|
+
- skills/ratatui-ruby/references/layout.md
|
|
460
|
+
- skills/ratatui-ruby/references/styling.md
|
|
461
|
+
- skills/ratatui-ruby/references/testing.md
|
|
462
|
+
- skills/ratatui-ruby/references/widgets.md
|
|
463
|
+
- skills/rspec/SKILL.md
|
|
464
|
+
- skills/rspec/examples/core/basic_structure.rb
|
|
465
|
+
- skills/rspec/examples/core/configuration.rb
|
|
466
|
+
- skills/rspec/examples/core/hooks.rb
|
|
467
|
+
- skills/rspec/examples/core/memoized_helpers.rb
|
|
468
|
+
- skills/rspec/examples/core/metadata_filtering.rb
|
|
469
|
+
- skills/rspec/examples/core/shared_examples.rb
|
|
470
|
+
- skills/rspec/examples/factory_bot/associations.rb
|
|
471
|
+
- skills/rspec/examples/factory_bot/build_strategies.rb
|
|
472
|
+
- skills/rspec/examples/factory_bot/callbacks.rb
|
|
473
|
+
- skills/rspec/examples/factory_bot/custom_construction.rb
|
|
474
|
+
- skills/rspec/examples/factory_bot/factory_definition.rb
|
|
475
|
+
- skills/rspec/examples/factory_bot/inheritance.rb
|
|
476
|
+
- skills/rspec/examples/factory_bot/traits.rb
|
|
477
|
+
- skills/rspec/examples/factory_bot/transients.rb
|
|
478
|
+
- skills/rspec/examples/matchers/change.rb
|
|
479
|
+
- skills/rspec/examples/matchers/collections.rb
|
|
480
|
+
- skills/rspec/examples/matchers/comparisons.rb
|
|
481
|
+
- skills/rspec/examples/matchers/composing.rb
|
|
482
|
+
- skills/rspec/examples/matchers/custom_matchers.rb
|
|
483
|
+
- skills/rspec/examples/matchers/equality.rb
|
|
484
|
+
- skills/rspec/examples/matchers/errors.rb
|
|
485
|
+
- skills/rspec/examples/matchers/output.rb
|
|
486
|
+
- skills/rspec/examples/matchers/predicates.rb
|
|
487
|
+
- skills/rspec/examples/matchers/truthiness.rb
|
|
488
|
+
- skills/rspec/examples/matchers/types.rb
|
|
489
|
+
- skills/rspec/examples/matchers/yield.rb
|
|
490
|
+
- skills/rspec/examples/mocks/any_instance.rb
|
|
491
|
+
- skills/rspec/examples/mocks/argument_matchers.rb
|
|
492
|
+
- skills/rspec/examples/mocks/constants.rb
|
|
493
|
+
- skills/rspec/examples/mocks/doubles.rb
|
|
494
|
+
- skills/rspec/examples/mocks/expectations.rb
|
|
495
|
+
- skills/rspec/examples/mocks/message_chains.rb
|
|
496
|
+
- skills/rspec/examples/mocks/ordering.rb
|
|
497
|
+
- skills/rspec/examples/mocks/receive_counts.rb
|
|
498
|
+
- skills/rspec/examples/mocks/responses.rb
|
|
499
|
+
- skills/rspec/examples/mocks/spies.rb
|
|
500
|
+
- skills/rspec/examples/mocks/stubbing.rb
|
|
501
|
+
- skills/rspec/examples/rails/channels.rb
|
|
502
|
+
- skills/rspec/examples/rails/controller_specs.rb
|
|
503
|
+
- skills/rspec/examples/rails/helper_specs.rb
|
|
504
|
+
- skills/rspec/examples/rails/job_specs.rb
|
|
505
|
+
- skills/rspec/examples/rails/mailer_specs.rb
|
|
506
|
+
- skills/rspec/examples/rails/matchers.rb
|
|
507
|
+
- skills/rspec/examples/rails/model_specs.rb
|
|
508
|
+
- skills/rspec/examples/rails/request_specs.rb
|
|
509
|
+
- skills/rspec/examples/rails/routing_specs.rb
|
|
510
|
+
- skills/rspec/examples/rails/system_specs.rb
|
|
511
|
+
- skills/rspec/examples/rails/transactions.rb
|
|
512
|
+
- skills/rspec/examples/rails/view_specs.rb
|
|
513
|
+
- skills/rspec/references/core.md
|
|
514
|
+
- skills/rspec/references/factory_bot.md
|
|
515
|
+
- skills/rspec/references/matchers.md
|
|
516
|
+
- skills/rspec/references/mocks.md
|
|
517
|
+
- skills/rspec/references/rails.md
|
|
518
|
+
- templates/soul.md
|
|
519
|
+
- workflows/commit.md
|
|
520
|
+
- workflows/create_handoff.md
|
|
521
|
+
- workflows/create_note.md
|
|
522
|
+
- workflows/create_plan.md
|
|
523
|
+
- workflows/decompose_ticket.md
|
|
524
|
+
- workflows/feature.md
|
|
525
|
+
- workflows/implement_plan.md
|
|
526
|
+
- workflows/iterate_plan.md
|
|
527
|
+
- workflows/research_codebase.md
|
|
528
|
+
- workflows/resume_handoff.md
|
|
529
|
+
- workflows/review_pr.md
|
|
530
|
+
- workflows/thoughts_init.md
|
|
531
|
+
- workflows/validate_plan.md
|
|
249
532
|
homepage: https://github.com/hoblin/anima
|
|
250
533
|
licenses:
|
|
251
534
|
- MIT
|