Recently shipped (manual note): autonomous task execution via koru/coru. Bare
taskill(ortaskill koru) resolves pending tasks from a list (TODO checkboxes → planfile tickets →TASK.md) and runs each throughcoru text "<task>" --llm. See the "Autonomous execution (koru)" section in the README and the CHANGELOG[Unreleased]entry.Follow-ups to consider:
- Optional MCP/A2A transport (talk to
mcp2koru/koruapiinstead of shelling out to thecoruCLI).- Per-task result reporting back into
planfile.yamlticket status.- Parallel task execution with a concurrency cap.
Generated by: prefact v0.1.48 Generated on: 2026-04-25T13:48:45.580758 Total issues: 76 active, 0 completed
- src/taskill/config.py:5 - Unused import: 'annotations'
- src/taskill/config.py:97 - Magic number: 120 - use named constant
- src/taskill/cli.py:10 - Unused import: 'annotations'
- src/taskill/cli.py:115 - Magic number: 12 - use named constant
- src/taskill/cli.py:346 - module execution block
- src/taskill/bulk.py:46 - String concatenation can be converted to f-string
- src/taskill/bulk.py:127 - String concatenation can be converted to f-string
- src/taskill/bulk.py:20 - Unused import: 'annotations'
- src/taskill/bulk.py:78 - LLM-style docstring in find_repos
- src/taskill/bulk.py:130 - LLM-style docstring in resolve_repo_config
- src/taskill/bulk.py:170 - LLM-style docstring in bulk_run
- src/taskill/git_state.py:120 - String concatenation can be converted to f-string
- src/taskill/git_state.py:2 - Unused import: 'annotations'
- src/taskill/git_state.py:48 - Magic number: 30 - use named constant
- src/taskill/core.py:17 - Unused Path imported from pathlib
- src/taskill/core.py:23 - Unused TaskillState imported from taskill.state
- src/taskill/core.py:11 - Unused import: 'annotations'
- src/taskill/core.py:176 - Magic number: 30 - use named constant
- src/taskill/providers/algorithmic.py:11 - Unused import: 'annotations'
- src/taskill/providers/algorithmic.py:151 - Magic number: 160 - use named constant
- src/taskill/providers/init.py:8 - Unused import: 'annotations'
- src/taskill/providers/openrouter.py:6 - Unused import: 'annotations'
- src/taskill/providers/openrouter.py:74 - Magic number in comparison: 200
- src/taskill/providers/openrouter.py:46 - Magic number: 120 - use named constant
- src/taskill/providers/openrouter.py:74 - Magic number: 200 - use named constant
- src/taskill/providers/base.py:2 - Unused import: 'annotations'
- src/taskill/providers/base.py:100 - Magic number: 4000 - use named constant
- src/taskill/providers/base.py:103 - Magic number: 3000 - use named constant
- src/taskill/providers/base.py:81 - Magic number: 50 - use named constant
- src/taskill/providers/windsurf_mcp.py:20 - Unused import json
- src/taskill/providers/windsurf_mcp.py:18 - Unused import: 'annotations'
- src/taskill/providers/windsurf_mcp.py:20 - Unused import: 'json'
- src/taskill/state.py:2 - Unused import: 'annotations'
- src/taskill/triggers.py:21 - String concatenation can be converted to f-string
- src/taskill/triggers.py:2 - Unused import: 'annotations'
- src/taskill/updaters/init.py:5 - Unused import: 'annotations'
- src/taskill/updaters/base.py:2 - Unused import: 'annotations'
- src/taskill/updaters/base.py:29 - LLM-style docstring in apply
- src/taskill/updaters/changelog.py:91 - String concatenation can be converted to f-string
- src/taskill/updaters/changelog.py:92 - String concatenation can be converted to f-string
- src/taskill/updaters/changelog.py:54 - String concatenation can be converted to f-string
- src/taskill/updaters/changelog.py:8 - Unused import: 'annotations'
- src/taskill/updaters/readme.py:87 - String concatenation can be converted to f-string
- src/taskill/updaters/readme.py:12 - Unused import: 'annotations'
- src/taskill/updaters/todo.py:90 - String concatenation can be converted to f-string
- src/taskill/updaters/todo.py:77 - String concatenation can be converted to f-string
- src/taskill/updaters/todo.py:9 - Unused import: 'annotations'
- tests/test_algorithmic.py:20 - Function 'test_groups_commits_by_conventional_type' missing return type (suggested: -> None)
- tests/test_algorithmic.py:38 - Function 'test_breaking_change_surfaces_first' missing return type (suggested: -> None)
- tests/test_algorithmic.py:48 - Function 'test_detects_explicit_checkbox_completion' missing return type (suggested: -> None)
- tests/test_algorithmic.py:2 - Unused import: 'annotations'
- tests/test_bulk.py:43 - Function 'test_find_repos_finds_direct_children' missing return type (suggested: -> None)
- tests/test_bulk.py:55 - Function 'test_find_repos_respects_max_depth' missing return type (suggested: -> None)
- tests/test_bulk.py:64 - Function 'test_find_repos_skips_hidden_and_noise_dirs' missing return type (suggested: -> None)
- tests/test_bulk.py:7 - Unused import pytest
- tests/test_bulk.py:2 - Unused import: 'annotations'
- tests/test_bulk.py:7 - Unused import: 'pytest'
- tests/test_config.py:9 - Function 'test_missing_yaml_returns_defaults' missing return type (suggested: -> None)
- tests/test_config.py:17 - Function 'test_yaml_overrides_defaults' missing return type (suggested: -> None)
- tests/test_config.py:37 - Function 'test_dotenv_loaded_from_project_root' missing return type (suggested: -> None)
- tests/test_config.py:2 - Unused import: 'annotations'
- tests/test_config.py:49 - Duplicate import: 'os' (first at line 41)
- tests/test_providers.py:11 - Function 'test_discover_providers_returns_builtins' missing return type (suggested: -> None)
- tests/test_providers.py:22 - Function 'test_build_chain_with_enabled_providers' missing return type (suggested: -> None)
- tests/test_providers.py:35 - Function 'test_build_chain_with_unknown_provider' missing return type (suggested: -> None)
- tests/test_providers.py:2 - Unused import: 'annotations'
- tests/test_triggers.py:29 - Function 'test_first_run_always_triggers' missing return type (suggested: -> None)
- tests/test_triggers.py:38 - Function 'test_recent_run_skips_when_no_commits' missing return type (suggested: -> None)
- tests/test_triggers.py:47 - Function 'test_commits_above_threshold_triggers' missing return type (suggested: -> None)
- tests/test_triggers.py:2 - Unused import: 'annotations'
- tests/test_updaters.py:16 - Function 'test_changelog_creates_file_with_entries' missing return type (suggested: -> None)
- tests/test_updaters.py:25 - Function 'test_changelog_appends_to_unreleased' missing return type (suggested: -> None)
- tests/test_updaters.py:41 - Function 'test_changelog_dedupes_existing_entries' missing return type (suggested: -> None)
- tests/test_updaters.py:6 - Unused import pytest
- tests/test_updaters.py:2 - Unused import: 'annotations'
- tests/test_updaters.py:6 - Unused import: 'pytest'
To execute all tasks, run: prefact -a --execute-todos