aidevops 2.52.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.
Files changed (329) hide show
  1. package/.agent/AGENTS.md +614 -0
  2. package/.agent/accounts.md +65 -0
  3. package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
  4. package/.agent/aidevops/api-integrations.md +335 -0
  5. package/.agent/aidevops/architecture.md +510 -0
  6. package/.agent/aidevops/configs.md +274 -0
  7. package/.agent/aidevops/docs.md +244 -0
  8. package/.agent/aidevops/extension.md +311 -0
  9. package/.agent/aidevops/mcp-integrations.md +340 -0
  10. package/.agent/aidevops/mcp-troubleshooting.md +162 -0
  11. package/.agent/aidevops/memory-patterns.md +172 -0
  12. package/.agent/aidevops/providers.md +217 -0
  13. package/.agent/aidevops/recommendations.md +321 -0
  14. package/.agent/aidevops/requirements.md +301 -0
  15. package/.agent/aidevops/resources.md +214 -0
  16. package/.agent/aidevops/security-requirements.md +174 -0
  17. package/.agent/aidevops/security.md +350 -0
  18. package/.agent/aidevops/service-links.md +400 -0
  19. package/.agent/aidevops/services.md +357 -0
  20. package/.agent/aidevops/setup.md +153 -0
  21. package/.agent/aidevops/troubleshooting.md +389 -0
  22. package/.agent/aidevops.md +124 -0
  23. package/.agent/build-plus.md +244 -0
  24. package/.agent/content/guidelines.md +109 -0
  25. package/.agent/content.md +87 -0
  26. package/.agent/health.md +59 -0
  27. package/.agent/legal.md +59 -0
  28. package/.agent/loop-state/full-loop.local.md +16 -0
  29. package/.agent/loop-state/ralph-loop.local.md +10 -0
  30. package/.agent/marketing.md +440 -0
  31. package/.agent/memory/README.md +260 -0
  32. package/.agent/onboarding.md +796 -0
  33. package/.agent/plan-plus.md +245 -0
  34. package/.agent/research.md +100 -0
  35. package/.agent/sales.md +333 -0
  36. package/.agent/scripts/101domains-helper.sh +701 -0
  37. package/.agent/scripts/add-missing-returns.sh +140 -0
  38. package/.agent/scripts/agent-browser-helper.sh +311 -0
  39. package/.agent/scripts/agno-setup.sh +712 -0
  40. package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
  41. package/.agent/scripts/aidevops-update-check.sh +71 -0
  42. package/.agent/scripts/ampcode-cli.sh +522 -0
  43. package/.agent/scripts/auto-version-bump.sh +156 -0
  44. package/.agent/scripts/autogen-helper.sh +512 -0
  45. package/.agent/scripts/beads-sync-helper.sh +596 -0
  46. package/.agent/scripts/closte-helper.sh +5 -0
  47. package/.agent/scripts/cloudron-helper.sh +321 -0
  48. package/.agent/scripts/codacy-cli-chunked.sh +581 -0
  49. package/.agent/scripts/codacy-cli.sh +442 -0
  50. package/.agent/scripts/code-audit-helper.sh +5 -0
  51. package/.agent/scripts/coderabbit-cli.sh +417 -0
  52. package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
  53. package/.agent/scripts/commands/code-simplifier.md +86 -0
  54. package/.agent/scripts/commands/full-loop.md +246 -0
  55. package/.agent/scripts/commands/postflight-loop.md +103 -0
  56. package/.agent/scripts/commands/recall.md +182 -0
  57. package/.agent/scripts/commands/remember.md +132 -0
  58. package/.agent/scripts/commands/save-todo.md +175 -0
  59. package/.agent/scripts/commands/session-review.md +154 -0
  60. package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
  61. package/.agent/scripts/context-builder-helper.sh +522 -0
  62. package/.agent/scripts/coolify-cli-helper.sh +674 -0
  63. package/.agent/scripts/coolify-helper.sh +380 -0
  64. package/.agent/scripts/crawl4ai-examples.sh +401 -0
  65. package/.agent/scripts/crawl4ai-helper.sh +1078 -0
  66. package/.agent/scripts/crewai-helper.sh +681 -0
  67. package/.agent/scripts/dev-browser-helper.sh +513 -0
  68. package/.agent/scripts/dns-helper.sh +396 -0
  69. package/.agent/scripts/domain-research-helper.sh +917 -0
  70. package/.agent/scripts/dspy-helper.sh +285 -0
  71. package/.agent/scripts/dspyground-helper.sh +291 -0
  72. package/.agent/scripts/eeat-score-helper.sh +1242 -0
  73. package/.agent/scripts/efficient-return-fix.sh +92 -0
  74. package/.agent/scripts/extract-opencode-prompts.sh +128 -0
  75. package/.agent/scripts/find-missing-returns.sh +113 -0
  76. package/.agent/scripts/fix-auth-headers.sh +104 -0
  77. package/.agent/scripts/fix-common-strings.sh +254 -0
  78. package/.agent/scripts/fix-content-type.sh +100 -0
  79. package/.agent/scripts/fix-error-messages.sh +130 -0
  80. package/.agent/scripts/fix-misplaced-returns.sh +74 -0
  81. package/.agent/scripts/fix-remaining-literals.sh +152 -0
  82. package/.agent/scripts/fix-return-statements.sh +41 -0
  83. package/.agent/scripts/fix-s131-default-cases.sh +249 -0
  84. package/.agent/scripts/fix-sc2155-simple.sh +102 -0
  85. package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
  86. package/.agent/scripts/fix-string-literals.sh +273 -0
  87. package/.agent/scripts/full-loop-helper.sh +773 -0
  88. package/.agent/scripts/generate-opencode-agents.sh +497 -0
  89. package/.agent/scripts/generate-opencode-commands.sh +1629 -0
  90. package/.agent/scripts/generate-skills.sh +366 -0
  91. package/.agent/scripts/git-platforms-helper.sh +640 -0
  92. package/.agent/scripts/gitea-cli-helper.sh +743 -0
  93. package/.agent/scripts/github-cli-helper.sh +702 -0
  94. package/.agent/scripts/gitlab-cli-helper.sh +682 -0
  95. package/.agent/scripts/gsc-add-user-helper.sh +325 -0
  96. package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
  97. package/.agent/scripts/hetzner-helper.sh +485 -0
  98. package/.agent/scripts/hostinger-helper.sh +229 -0
  99. package/.agent/scripts/keyword-research-helper.sh +1815 -0
  100. package/.agent/scripts/langflow-helper.sh +544 -0
  101. package/.agent/scripts/linkedin-automation.py +241 -0
  102. package/.agent/scripts/linter-manager.sh +599 -0
  103. package/.agent/scripts/linters-local.sh +434 -0
  104. package/.agent/scripts/list-keys-helper.sh +488 -0
  105. package/.agent/scripts/local-browser-automation.py +339 -0
  106. package/.agent/scripts/localhost-helper.sh +744 -0
  107. package/.agent/scripts/loop-common.sh +806 -0
  108. package/.agent/scripts/mainwp-helper.sh +728 -0
  109. package/.agent/scripts/markdown-formatter.sh +338 -0
  110. package/.agent/scripts/markdown-lint-fix.sh +311 -0
  111. package/.agent/scripts/mass-fix-returns.sh +58 -0
  112. package/.agent/scripts/mcp-diagnose.sh +167 -0
  113. package/.agent/scripts/mcp-inspector-helper.sh +449 -0
  114. package/.agent/scripts/memory-helper.sh +650 -0
  115. package/.agent/scripts/monitor-code-review.sh +255 -0
  116. package/.agent/scripts/onboarding-helper.sh +706 -0
  117. package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
  118. package/.agent/scripts/opencode-test-helper.sh +213 -0
  119. package/.agent/scripts/pagespeed-helper.sh +464 -0
  120. package/.agent/scripts/pandoc-helper.sh +362 -0
  121. package/.agent/scripts/postflight-check.sh +555 -0
  122. package/.agent/scripts/pre-commit-hook.sh +259 -0
  123. package/.agent/scripts/pre-edit-check.sh +169 -0
  124. package/.agent/scripts/qlty-cli.sh +356 -0
  125. package/.agent/scripts/quality-cli-manager.sh +525 -0
  126. package/.agent/scripts/quality-feedback-helper.sh +462 -0
  127. package/.agent/scripts/quality-fix.sh +263 -0
  128. package/.agent/scripts/quality-loop-helper.sh +1108 -0
  129. package/.agent/scripts/ralph-loop-helper.sh +836 -0
  130. package/.agent/scripts/ralph-upstream-check.sh +341 -0
  131. package/.agent/scripts/secretlint-helper.sh +847 -0
  132. package/.agent/scripts/servers-helper.sh +241 -0
  133. package/.agent/scripts/ses-helper.sh +619 -0
  134. package/.agent/scripts/session-review-helper.sh +404 -0
  135. package/.agent/scripts/setup-linters-wizard.sh +379 -0
  136. package/.agent/scripts/setup-local-api-keys.sh +330 -0
  137. package/.agent/scripts/setup-mcp-integrations.sh +472 -0
  138. package/.agent/scripts/shared-constants.sh +246 -0
  139. package/.agent/scripts/site-crawler-helper.sh +1487 -0
  140. package/.agent/scripts/snyk-helper.sh +940 -0
  141. package/.agent/scripts/sonarcloud-autofix.sh +193 -0
  142. package/.agent/scripts/sonarcloud-cli.sh +191 -0
  143. package/.agent/scripts/sonarscanner-cli.sh +455 -0
  144. package/.agent/scripts/spaceship-helper.sh +747 -0
  145. package/.agent/scripts/stagehand-helper.sh +321 -0
  146. package/.agent/scripts/stagehand-python-helper.sh +321 -0
  147. package/.agent/scripts/stagehand-python-setup.sh +441 -0
  148. package/.agent/scripts/stagehand-setup.sh +439 -0
  149. package/.agent/scripts/system-cleanup.sh +340 -0
  150. package/.agent/scripts/terminal-title-helper.sh +388 -0
  151. package/.agent/scripts/terminal-title-setup.sh +549 -0
  152. package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
  153. package/.agent/scripts/test-stagehand-integration.sh +309 -0
  154. package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
  155. package/.agent/scripts/todo-ready.sh +263 -0
  156. package/.agent/scripts/tool-version-check.sh +362 -0
  157. package/.agent/scripts/toon-helper.sh +469 -0
  158. package/.agent/scripts/twilio-helper.sh +917 -0
  159. package/.agent/scripts/updown-helper.sh +279 -0
  160. package/.agent/scripts/validate-mcp-integrations.sh +250 -0
  161. package/.agent/scripts/validate-version-consistency.sh +131 -0
  162. package/.agent/scripts/vaultwarden-helper.sh +597 -0
  163. package/.agent/scripts/vercel-cli-helper.sh +816 -0
  164. package/.agent/scripts/verify-mirrors.sh +169 -0
  165. package/.agent/scripts/version-manager.sh +831 -0
  166. package/.agent/scripts/webhosting-helper.sh +471 -0
  167. package/.agent/scripts/webhosting-verify.sh +238 -0
  168. package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
  169. package/.agent/scripts/worktree-helper.sh +595 -0
  170. package/.agent/scripts/worktree-sessions.sh +577 -0
  171. package/.agent/seo/dataforseo.md +215 -0
  172. package/.agent/seo/domain-research.md +532 -0
  173. package/.agent/seo/eeat-score.md +659 -0
  174. package/.agent/seo/google-search-console.md +366 -0
  175. package/.agent/seo/gsc-sitemaps.md +282 -0
  176. package/.agent/seo/keyword-research.md +521 -0
  177. package/.agent/seo/serper.md +278 -0
  178. package/.agent/seo/site-crawler.md +387 -0
  179. package/.agent/seo.md +236 -0
  180. package/.agent/services/accounting/quickfile.md +159 -0
  181. package/.agent/services/communications/telfon.md +470 -0
  182. package/.agent/services/communications/twilio.md +569 -0
  183. package/.agent/services/crm/fluentcrm.md +449 -0
  184. package/.agent/services/email/ses.md +399 -0
  185. package/.agent/services/hosting/101domains.md +378 -0
  186. package/.agent/services/hosting/closte.md +177 -0
  187. package/.agent/services/hosting/cloudflare.md +251 -0
  188. package/.agent/services/hosting/cloudron.md +478 -0
  189. package/.agent/services/hosting/dns-providers.md +335 -0
  190. package/.agent/services/hosting/domain-purchasing.md +344 -0
  191. package/.agent/services/hosting/hetzner.md +327 -0
  192. package/.agent/services/hosting/hostinger.md +287 -0
  193. package/.agent/services/hosting/localhost.md +419 -0
  194. package/.agent/services/hosting/spaceship.md +353 -0
  195. package/.agent/services/hosting/webhosting.md +330 -0
  196. package/.agent/social-media.md +69 -0
  197. package/.agent/templates/plans-template.md +114 -0
  198. package/.agent/templates/prd-template.md +129 -0
  199. package/.agent/templates/tasks-template.md +108 -0
  200. package/.agent/templates/todo-template.md +89 -0
  201. package/.agent/tools/ai-assistants/agno.md +471 -0
  202. package/.agent/tools/ai-assistants/capsolver.md +326 -0
  203. package/.agent/tools/ai-assistants/configuration.md +221 -0
  204. package/.agent/tools/ai-assistants/overview.md +209 -0
  205. package/.agent/tools/ai-assistants/status.md +171 -0
  206. package/.agent/tools/ai-assistants/windsurf.md +193 -0
  207. package/.agent/tools/ai-orchestration/autogen.md +406 -0
  208. package/.agent/tools/ai-orchestration/crewai.md +445 -0
  209. package/.agent/tools/ai-orchestration/langflow.md +405 -0
  210. package/.agent/tools/ai-orchestration/openprose.md +487 -0
  211. package/.agent/tools/ai-orchestration/overview.md +362 -0
  212. package/.agent/tools/ai-orchestration/packaging.md +647 -0
  213. package/.agent/tools/browser/agent-browser.md +464 -0
  214. package/.agent/tools/browser/browser-automation.md +400 -0
  215. package/.agent/tools/browser/chrome-devtools.md +282 -0
  216. package/.agent/tools/browser/crawl4ai-integration.md +422 -0
  217. package/.agent/tools/browser/crawl4ai-resources.md +277 -0
  218. package/.agent/tools/browser/crawl4ai-usage.md +416 -0
  219. package/.agent/tools/browser/crawl4ai.md +585 -0
  220. package/.agent/tools/browser/dev-browser.md +341 -0
  221. package/.agent/tools/browser/pagespeed.md +260 -0
  222. package/.agent/tools/browser/playwright.md +266 -0
  223. package/.agent/tools/browser/playwriter.md +310 -0
  224. package/.agent/tools/browser/stagehand-examples.md +456 -0
  225. package/.agent/tools/browser/stagehand-python.md +483 -0
  226. package/.agent/tools/browser/stagehand.md +421 -0
  227. package/.agent/tools/build-agent/agent-review.md +224 -0
  228. package/.agent/tools/build-agent/build-agent.md +784 -0
  229. package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
  230. package/.agent/tools/build-mcp/api-wrapper.md +445 -0
  231. package/.agent/tools/build-mcp/build-mcp.md +240 -0
  232. package/.agent/tools/build-mcp/deployment.md +401 -0
  233. package/.agent/tools/build-mcp/server-patterns.md +632 -0
  234. package/.agent/tools/build-mcp/transports.md +366 -0
  235. package/.agent/tools/code-review/auditing.md +383 -0
  236. package/.agent/tools/code-review/automation.md +219 -0
  237. package/.agent/tools/code-review/best-practices.md +203 -0
  238. package/.agent/tools/code-review/codacy.md +151 -0
  239. package/.agent/tools/code-review/code-simplifier.md +174 -0
  240. package/.agent/tools/code-review/code-standards.md +309 -0
  241. package/.agent/tools/code-review/coderabbit.md +101 -0
  242. package/.agent/tools/code-review/management.md +155 -0
  243. package/.agent/tools/code-review/qlty.md +248 -0
  244. package/.agent/tools/code-review/secretlint.md +565 -0
  245. package/.agent/tools/code-review/setup.md +250 -0
  246. package/.agent/tools/code-review/snyk.md +563 -0
  247. package/.agent/tools/code-review/tools.md +230 -0
  248. package/.agent/tools/content/summarize.md +353 -0
  249. package/.agent/tools/context/augment-context-engine.md +468 -0
  250. package/.agent/tools/context/context-builder-agent.md +76 -0
  251. package/.agent/tools/context/context-builder.md +375 -0
  252. package/.agent/tools/context/context7.md +371 -0
  253. package/.agent/tools/context/dspy.md +302 -0
  254. package/.agent/tools/context/dspyground.md +374 -0
  255. package/.agent/tools/context/llm-tldr.md +219 -0
  256. package/.agent/tools/context/osgrep.md +488 -0
  257. package/.agent/tools/context/prompt-optimization.md +338 -0
  258. package/.agent/tools/context/toon.md +292 -0
  259. package/.agent/tools/conversion/pandoc.md +304 -0
  260. package/.agent/tools/credentials/api-key-management.md +154 -0
  261. package/.agent/tools/credentials/api-key-setup.md +224 -0
  262. package/.agent/tools/credentials/environment-variables.md +180 -0
  263. package/.agent/tools/credentials/vaultwarden.md +382 -0
  264. package/.agent/tools/data-extraction/outscraper.md +974 -0
  265. package/.agent/tools/deployment/coolify-cli.md +388 -0
  266. package/.agent/tools/deployment/coolify-setup.md +353 -0
  267. package/.agent/tools/deployment/coolify.md +345 -0
  268. package/.agent/tools/deployment/vercel.md +390 -0
  269. package/.agent/tools/git/authentication.md +132 -0
  270. package/.agent/tools/git/gitea-cli.md +193 -0
  271. package/.agent/tools/git/github-actions.md +207 -0
  272. package/.agent/tools/git/github-cli.md +223 -0
  273. package/.agent/tools/git/gitlab-cli.md +190 -0
  274. package/.agent/tools/git/opencode-github-security.md +350 -0
  275. package/.agent/tools/git/opencode-github.md +328 -0
  276. package/.agent/tools/git/opencode-gitlab.md +252 -0
  277. package/.agent/tools/git/security.md +196 -0
  278. package/.agent/tools/git.md +207 -0
  279. package/.agent/tools/opencode/oh-my-opencode.md +375 -0
  280. package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
  281. package/.agent/tools/opencode/opencode.md +651 -0
  282. package/.agent/tools/social-media/bird.md +437 -0
  283. package/.agent/tools/task-management/beads.md +336 -0
  284. package/.agent/tools/terminal/terminal-title.md +251 -0
  285. package/.agent/tools/ui/shadcn.md +196 -0
  286. package/.agent/tools/ui/ui-skills.md +115 -0
  287. package/.agent/tools/wordpress/localwp.md +311 -0
  288. package/.agent/tools/wordpress/mainwp.md +391 -0
  289. package/.agent/tools/wordpress/scf.md +527 -0
  290. package/.agent/tools/wordpress/wp-admin.md +729 -0
  291. package/.agent/tools/wordpress/wp-dev.md +940 -0
  292. package/.agent/tools/wordpress/wp-preferred.md +398 -0
  293. package/.agent/tools/wordpress.md +95 -0
  294. package/.agent/workflows/branch/bugfix.md +63 -0
  295. package/.agent/workflows/branch/chore.md +95 -0
  296. package/.agent/workflows/branch/experiment.md +115 -0
  297. package/.agent/workflows/branch/feature.md +59 -0
  298. package/.agent/workflows/branch/hotfix.md +98 -0
  299. package/.agent/workflows/branch/refactor.md +92 -0
  300. package/.agent/workflows/branch/release.md +96 -0
  301. package/.agent/workflows/branch.md +347 -0
  302. package/.agent/workflows/bug-fixing.md +267 -0
  303. package/.agent/workflows/changelog.md +129 -0
  304. package/.agent/workflows/code-audit-remote.md +279 -0
  305. package/.agent/workflows/conversation-starter.md +69 -0
  306. package/.agent/workflows/error-feedback.md +578 -0
  307. package/.agent/workflows/feature-development.md +355 -0
  308. package/.agent/workflows/git-workflow.md +702 -0
  309. package/.agent/workflows/multi-repo-workspace.md +268 -0
  310. package/.agent/workflows/plans.md +709 -0
  311. package/.agent/workflows/postflight.md +604 -0
  312. package/.agent/workflows/pr.md +571 -0
  313. package/.agent/workflows/preflight.md +278 -0
  314. package/.agent/workflows/ralph-loop.md +773 -0
  315. package/.agent/workflows/release.md +498 -0
  316. package/.agent/workflows/session-manager.md +254 -0
  317. package/.agent/workflows/session-review.md +311 -0
  318. package/.agent/workflows/sql-migrations.md +631 -0
  319. package/.agent/workflows/version-bump.md +283 -0
  320. package/.agent/workflows/wiki-update.md +333 -0
  321. package/.agent/workflows/worktree.md +477 -0
  322. package/LICENSE +21 -0
  323. package/README.md +1446 -0
  324. package/VERSION +1 -0
  325. package/aidevops.sh +1746 -0
  326. package/bin/aidevops +21 -0
  327. package/package.json +75 -0
  328. package/scripts/npm-postinstall.js +60 -0
  329. package/setup.sh +2366 -0
@@ -0,0 +1,404 @@
1
+ #!/usr/bin/env bash
2
+ # session-review-helper.sh - Gather session context for AI review
3
+ # Part of aidevops framework: https://aidevops.sh
4
+ #
5
+ # Usage:
6
+ # session-review-helper.sh [command] [options]
7
+ #
8
+ # Commands:
9
+ # gather Collect session context (default)
10
+ # summary Quick summary only
11
+ # json Output as JSON for programmatic use
12
+ #
13
+ # Options:
14
+ # --focus <area> Focus on: objectives, workflow, knowledge, all (default: all)
15
+
16
+ set -euo pipefail
17
+
18
+ # Colors
19
+ readonly GREEN='\033[0;32m'
20
+ readonly YELLOW='\033[1;33m'
21
+ readonly RED='\033[0;31m'
22
+ readonly BLUE='\033[0;34m'
23
+ readonly CYAN='\033[0;36m'
24
+ readonly BOLD='\033[1m'
25
+ readonly NC='\033[0m'
26
+
27
+ # Find project root (look for .git or TODO.md)
28
+ find_project_root() {
29
+ local dir="$PWD"
30
+ while [[ "$dir" != "/" ]]; do
31
+ if [[ -d "$dir/.git" ]] || [[ -f "$dir/TODO.md" ]]; then
32
+ echo "$dir"
33
+ return 0
34
+ fi
35
+ dir="$(dirname "$dir")"
36
+ done
37
+ echo "$PWD"
38
+ return 0
39
+ }
40
+
41
+ # Get current branch
42
+ get_branch() {
43
+ git branch --show-current 2>/dev/null || echo "not-a-git-repo"
44
+ return 0
45
+ }
46
+
47
+ # Check if on protected branch
48
+ is_protected_branch() {
49
+ local branch
50
+ branch=$(get_branch)
51
+ [[ "$branch" == "main" || "$branch" == "master" ]]
52
+ return 0
53
+ }
54
+
55
+ # Get recent commits
56
+ get_recent_commits() {
57
+ local count="${1:-10}"
58
+ git log --oneline -"$count" 2>/dev/null || echo "No commits"
59
+ return 0
60
+ }
61
+
62
+ # Get uncommitted changes count
63
+ get_uncommitted_changes() {
64
+ local staged unstaged
65
+ staged=$(git diff --cached --name-only 2>/dev/null | wc -l | tr -d '[:space:]')
66
+ unstaged=$(git diff --name-only 2>/dev/null | wc -l | tr -d '[:space:]')
67
+ echo "staged:${staged:-0},unstaged:${unstaged:-0}"
68
+ return 0
69
+ }
70
+
71
+ # Get TODO.md status
72
+ get_todo_status() {
73
+ local project_root="$1"
74
+ local todo_file="$project_root/TODO.md"
75
+
76
+ if [[ ! -f "$todo_file" ]]; then
77
+ echo "no-todo-file"
78
+ return
79
+ fi
80
+
81
+ local completed incomplete in_progress
82
+ completed=$(grep -cE '^\s*- \[x\]' "$todo_file" 2>/dev/null) || completed=0
83
+ incomplete=$(grep -cE '^\s*- \[ \]' "$todo_file" 2>/dev/null) || incomplete=0
84
+ in_progress=$(grep -cE '^\s*- \[>\]' "$todo_file" 2>/dev/null) || in_progress=0
85
+
86
+ echo "completed:$completed,incomplete:$incomplete,in_progress:$in_progress"
87
+ }
88
+
89
+ # Check for Ralph loop
90
+ get_ralph_status() {
91
+ local project_root="$1"
92
+ # Check new location first, then legacy
93
+ local ralph_file="$project_root/.agent/loop-state/ralph-loop.local.md"
94
+ local ralph_file_legacy="$project_root/.claude/ralph-loop.local.md"
95
+
96
+ local active_file=""
97
+ [[ -f "$ralph_file" ]] && active_file="$ralph_file"
98
+ [[ -z "$active_file" && -f "$ralph_file_legacy" ]] && active_file="$ralph_file_legacy"
99
+
100
+ if [[ -n "$active_file" ]]; then
101
+ local iteration max_iter
102
+ iteration=$(grep '^iteration:' "$active_file" 2>/dev/null | cut -d: -f2 | tr -d ' ' || echo "0")
103
+ max_iter=$(grep '^max_iterations:' "$active_file" 2>/dev/null | cut -d: -f2 | tr -d ' ' || echo "unlimited")
104
+ echo "active:true,iteration:$iteration,max:$max_iter"
105
+ else
106
+ echo "active:false"
107
+ fi
108
+ return 0
109
+ }
110
+
111
+ # Get open PRs
112
+ get_pr_status() {
113
+ if command -v gh &>/dev/null; then
114
+ local open_prs
115
+ open_prs=$(gh pr list --state open --limit 5 --json number,title 2>/dev/null || echo "[]")
116
+ if [[ "$open_prs" == "[]" ]]; then
117
+ echo "no-open-prs"
118
+ else
119
+ echo "$open_prs" | jq -r '.[] | "\(.number):\(.title)"' 2>/dev/null | head -3 || echo "error-parsing"
120
+ fi
121
+ else
122
+ echo "gh-not-installed"
123
+ fi
124
+ return 0
125
+ }
126
+
127
+ # Check workflow adherence
128
+ check_workflow_adherence() {
129
+ local project_root="$1"
130
+ local issues=""
131
+ local passed=""
132
+
133
+ # Check if we're in a git repo
134
+ local is_git_repo=true
135
+ if ! git rev-parse --git-dir &>/dev/null; then
136
+ is_git_repo=false
137
+ issues+="not-a-git-repo,"
138
+ fi
139
+
140
+ if [[ "$is_git_repo" == "true" ]]; then
141
+ # Check 1: Not on main
142
+ if is_protected_branch; then
143
+ issues+="on-protected-branch,"
144
+ else
145
+ passed+="feature-branch,"
146
+ fi
147
+
148
+ # Check 2: Recent commits have good messages
149
+ local short_messages
150
+ short_messages=$(git log --oneline -5 2>/dev/null | awk 'length($0) < 15' | wc -l | tr -d ' ' || echo "0")
151
+ short_messages="${short_messages:-0}"
152
+ if [[ "$short_messages" -gt 0 ]]; then
153
+ issues+="short-commit-messages,"
154
+ else
155
+ passed+="good-commit-messages,"
156
+ fi
157
+
158
+ # Check 3: No secrets in staged files
159
+ if git diff --cached --name-only 2>/dev/null | grep -qE '\.(env|key|pem|secret)$'; then
160
+ issues+="potential-secrets-staged,"
161
+ else
162
+ passed+="no-secrets-staged,"
163
+ fi
164
+ fi
165
+
166
+ # Check 4: TODO.md exists (works in any directory)
167
+ if [[ -f "$project_root/TODO.md" ]]; then
168
+ passed+="todo-exists,"
169
+ else
170
+ issues+="no-todo-file,"
171
+ fi
172
+
173
+ echo "passed:${passed%,}|issues:${issues%,}"
174
+ return 0
175
+ }
176
+
177
+ # Gather all context
178
+ gather_context() {
179
+ local project_root="$1"
180
+ local focus="${2:-all}"
181
+
182
+ echo -e "${BOLD}${BLUE}=== Session Review Context ===${NC}"
183
+ echo ""
184
+
185
+ # Basic info
186
+ echo -e "${CYAN}## Environment${NC}"
187
+ echo "Project: $project_root"
188
+ echo "Branch: $(get_branch)"
189
+ echo "Date: $(date '+%Y-%m-%d %H:%M')"
190
+ echo ""
191
+
192
+ if [[ "$focus" == "all" || "$focus" == "objectives" ]]; then
193
+ echo -e "${CYAN}## Objective Status${NC}"
194
+ echo "Recent commits:"
195
+ get_recent_commits 5 | sed 's/^/ /'
196
+ echo ""
197
+ echo "Uncommitted: $(get_uncommitted_changes)"
198
+ echo "TODO status: $(get_todo_status "$project_root")"
199
+ echo ""
200
+ fi
201
+
202
+ if [[ "$focus" == "all" || "$focus" == "workflow" ]]; then
203
+ echo -e "${CYAN}## Workflow Adherence${NC}"
204
+ local adherence
205
+ adherence=$(check_workflow_adherence "$project_root")
206
+ local passed issues
207
+ passed=$(echo "$adherence" | cut -d'|' -f1 | cut -d: -f2)
208
+ issues=$(echo "$adherence" | cut -d'|' -f2 | cut -d: -f2)
209
+
210
+ if [[ -n "$passed" ]]; then
211
+ echo -e "${GREEN}Passed:${NC}"
212
+ echo "$passed" | tr ',' '\n' | sed 's/^/ - /' | grep -v '^ - $'
213
+ fi
214
+
215
+ if [[ -n "$issues" ]]; then
216
+ echo -e "${YELLOW}Issues:${NC}"
217
+ echo "$issues" | tr ',' '\n' | sed 's/^/ - /' | grep -v '^ - $'
218
+ fi
219
+ echo ""
220
+ fi
221
+
222
+ if [[ "$focus" == "all" || "$focus" == "knowledge" ]]; then
223
+ echo -e "${CYAN}## Session Context${NC}"
224
+ echo "Ralph loop: $(get_ralph_status "$project_root")"
225
+ echo "Open PRs: $(get_pr_status)"
226
+ echo ""
227
+ fi
228
+
229
+ # Recommendations
230
+ echo -e "${CYAN}## Quick Recommendations${NC}"
231
+
232
+ if is_protected_branch; then
233
+ echo -e "${RED}! Create feature branch before making changes${NC}"
234
+ fi
235
+
236
+ local todo_status
237
+ todo_status=$(get_todo_status "$project_root")
238
+ # Only show TODO stats if we have a valid TODO file
239
+ if [[ "$todo_status" != "no-todo-file" ]]; then
240
+ local incomplete
241
+ incomplete=$(echo "$todo_status" | grep -oE 'incomplete:[0-9]+' | cut -d: -f2 || echo "0")
242
+ incomplete="${incomplete:-0}"
243
+ if [[ "$incomplete" -gt 0 ]]; then
244
+ echo "- $incomplete incomplete tasks in TODO.md"
245
+ fi
246
+ fi
247
+
248
+ local changes
249
+ changes=$(get_uncommitted_changes)
250
+ local staged unstaged
251
+ # Extract staged count (match 'staged:N' at start, before comma)
252
+ staged=$(echo "$changes" | sed -n 's/^staged:\([0-9]*\),.*/\1/p')
253
+ # Extract unstaged count (match 'unstaged:N' after comma)
254
+ unstaged=$(echo "$changes" | sed -n 's/.*,unstaged:\([0-9]*\)$/\1/p')
255
+ staged="${staged:-0}"
256
+ unstaged="${unstaged:-0}"
257
+ if [[ "$staged" -gt 0 ]] || [[ "$unstaged" -gt 0 ]]; then
258
+ echo "- Uncommitted changes: $staged staged, $unstaged unstaged"
259
+ fi
260
+
261
+ echo ""
262
+ echo -e "${BOLD}Run /session-review in AI assistant for full analysis${NC}"
263
+ return 0
264
+ }
265
+
266
+ # Output as JSON
267
+ output_json() {
268
+ local project_root="$1"
269
+
270
+ local branch todo_status ralph_status adherence changes
271
+ branch=$(get_branch)
272
+ todo_status=$(get_todo_status "$project_root")
273
+ ralph_status=$(get_ralph_status "$project_root")
274
+ adherence=$(check_workflow_adherence "$project_root")
275
+ changes=$(get_uncommitted_changes)
276
+
277
+ # Extract values using sed for reliable parsing
278
+ local completed incomplete in_progress staged unstaged
279
+ completed=$(echo "$todo_status" | sed -n 's/.*completed:\([0-9]*\).*/\1/p')
280
+ incomplete=$(echo "$todo_status" | sed -n 's/.*incomplete:\([0-9]*\).*/\1/p')
281
+ in_progress=$(echo "$todo_status" | sed -n 's/.*in_progress:\([0-9]*\).*/\1/p')
282
+ staged=$(echo "$changes" | sed -n 's/^staged:\([0-9]*\),.*/\1/p')
283
+ unstaged=$(echo "$changes" | sed -n 's/.*,unstaged:\([0-9]*\)$/\1/p')
284
+
285
+ cat <<EOF
286
+ {
287
+ "project": "$project_root",
288
+ "branch": "$branch",
289
+ "timestamp": "$(date -u '+%Y-%m-%dT%H:%M:%SZ')",
290
+ "todo": {
291
+ "completed": ${completed:-0},
292
+ "incomplete": ${incomplete:-0},
293
+ "in_progress": ${in_progress:-0}
294
+ },
295
+ "changes": {
296
+ "staged": ${staged:-0},
297
+ "unstaged": ${unstaged:-0}
298
+ },
299
+ "ralph_loop": {
300
+ "active": $(echo "$ralph_status" | grep -q 'active:true' && echo "true" || echo "false")
301
+ },
302
+ "workflow": {
303
+ "on_protected_branch": $(is_protected_branch && echo "true" || echo "false")
304
+ }
305
+ }
306
+ EOF
307
+ return 0
308
+ }
309
+
310
+ # Quick summary
311
+ output_summary() {
312
+ local project_root="$1"
313
+
314
+ echo "Branch: $(get_branch)"
315
+ echo "TODO: $(get_todo_status "$project_root")"
316
+ echo "Changes: $(get_uncommitted_changes)"
317
+
318
+ if is_protected_branch; then
319
+ echo -e "${RED}WARNING: On protected branch${NC}"
320
+ fi
321
+
322
+ return 0
323
+ }
324
+
325
+ # Show help
326
+ show_help() {
327
+ cat <<EOF
328
+ session-review-helper.sh - Gather session context for AI review
329
+
330
+ Usage:
331
+ session-review-helper.sh [command] [options]
332
+
333
+ Commands:
334
+ gather Collect session context (default)
335
+ summary Quick summary only
336
+ json Output as JSON for programmatic use
337
+ help Show this help
338
+
339
+ Options:
340
+ --focus <area> Focus on: objectives, workflow, knowledge, all (default: all)
341
+
342
+ Examples:
343
+ session-review-helper.sh # Full context gathering
344
+ session-review-helper.sh summary # Quick summary
345
+ session-review-helper.sh json # JSON output
346
+ session-review-helper.sh gather --focus workflow # Focus on workflow
347
+
348
+ EOF
349
+ return 0
350
+ }
351
+
352
+ # Main
353
+ main() {
354
+ local command="gather"
355
+ local focus="all"
356
+
357
+ # Parse arguments
358
+ while [[ $# -gt 0 ]]; do
359
+ case "$1" in
360
+ gather|summary|json|help)
361
+ command="$1"
362
+ ;;
363
+ --focus)
364
+ shift
365
+ focus="${1:-all}"
366
+ ;;
367
+ --help|-h)
368
+ command="help"
369
+ ;;
370
+ *)
371
+ echo "Unknown option: $1" >&2
372
+ show_help
373
+ exit 1
374
+ ;;
375
+ esac
376
+ shift
377
+ done
378
+
379
+ local project_root
380
+ project_root=$(find_project_root)
381
+
382
+ case "$command" in
383
+ gather)
384
+ gather_context "$project_root" "$focus"
385
+ ;;
386
+ summary)
387
+ output_summary "$project_root"
388
+ ;;
389
+ json)
390
+ output_json "$project_root"
391
+ ;;
392
+ help)
393
+ show_help
394
+ ;;
395
+ *)
396
+ gather_context "$project_root" "$focus"
397
+ ;;
398
+ esac
399
+
400
+ return 0
401
+ }
402
+
403
+ main "$@"
404
+ exit $?