YeonGyu-Kim
42f5386100
fix(tests): drop duplicate tilde config regression
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:08:53 +09:00
YeonGyu-Kim
5bc019eb7c
fix(skills): remove duplicate homedir import
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:06:32 +09:00
YeonGyu-Kim
8413bc6a91
fix(skills): expand tilde config source paths
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:02:36 +09:00
YeonGyu-Kim
86a62aef45
fix(skills): discover ancestor project skill directories
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:02:36 +09:00
YeonGyu-Kim
12a4318439
fix(commands): load .agents skills into command config
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 12:15:47 +09:00
YeonGyu-Kim
b5cb50b561
fix(skills): discover ancestor project skill directories
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
8242500856
fix(skills): expand tilde config source paths
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
0471078006
fix(tmux): escape serverUrl in pane shell commands
2026-03-17 15:16:54 +09:00
YeonGyu-Kim
fe3f0584ed
test(skill-loader): avoid node:fs mock leakage in project skill references
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-16 11:37:56 +09:00
YeonGyu-Kim
b63082a3bb
fix(skills): correct invalid task tool references
2026-03-16 10:38:54 +09:00
YeonGyu-Kim
55b80fb7cd
fix(skill-loader): discover skills from parent config dir when using profiles
...
OPENCODE_CONFIG_DIR pointing to profiles/ subdirectory caused skills at
~/.config/opencode/skills/ to be invisible. Added getOpenCodeSkillDirs()
with the same parent-dir fallback that getOpenCodeCommandDirs() uses.
2026-03-12 19:53:30 +09:00
YeonGyu-Kim
38ac3d095a
Merge pull request #2332 from devxoul/feat/git-master-env-prefix
...
feat(git-master): add GIT_MASTER=1 env prefix for all git commands
2026-03-11 19:33:50 +09:00
YeonGyu-Kim
a70e7fe742
test(git-master): cover full git command prefix injection
2026-03-11 17:07:43 +09:00
YeonGyu-Kim
bf9721d4ee
fix(git-master): prefix git commands in injected templates
2026-03-11 17:07:33 +09:00
YeonGyu-Kim
a2fd6d77bd
docs: update all GitHub URLs from oh-my-opencode to oh-my-openagent
...
The GitHub repository was renamed from oh-my-opencode to oh-my-openagent,
but all documentation, scripts, and source code references still pointed
to the old repository name. This caused confusion for users who saw
'oh-my-opencode' in docs but a different repo name on GitHub.
Updated all references across:
- README files (en, ko, ja, zh-cn, ru)
- CONTRIBUTING.md
- docs/ (installation, overview, configuration, etc.)
- Source code (schema URLs, GitHub API calls, issue links)
- Test snapshots
The npm package name remains 'oh-my-opencode' (unchanged).
Fixes: https://x.com/Dhruv14588676/status/2031216617762468348
2026-03-10 15:18:16 +09:00
YeonGyu-Kim
23dcd99c9a
docs(agents): refresh generated AGENTS guides
...
🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-03-06 17:59:05 +09:00
Jeon Suyeol
6366c7ef6e
test(git-master): add tests for git_env_prefix injection
...
Add unit tests for env prefix injection (default, disabled, custom value) and update existing skill-content tests to include git_env_prefix field.
2026-03-06 11:35:59 +09:00
Jeon Suyeol
26c8d55b67
feat(git-master): add git_env_prefix config to prefix all git commands
...
When git-master skill is loaded, all git commands are prefixed with the configured env variable (default: GIT_MASTER=1). This enables custom git hooks to detect git-master skill usage. Set to empty string to disable.
2026-03-06 11:35:52 +09:00
YeonGyu-Kim
33d39597ae
docs(agents): regenerate AGENTS.md hierarchy with updated metrics and model configs
...
- 1208→1243 TS files (+35), 143k→155k LOC (+12k)
- Update all agent models: Sisyphus, Hephaestus, Oracle, Librarian, Atlas, Metis, Momus
- Add 6 new hook directories (39→45 dirs): beast-mode-system, hashline-edit-diff-enhancer, anthropic-image-context, task-reminder, compaction-todo-preserver, runtime-fallback
- Update category models: visual-engineering/artistry gemini-3-pro→gemini-3.1-pro
- Add 2 config schema files: fallback-models.ts, runtime-fallback.ts
- Timestamp: 2026-03-02 | Commit: 1c2caa09
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-03-02 23:40:38 +09:00
YeonGyu-Kim
73453a7191
docs(agents): update hook counts 44→46, add hashline-edit documentation
...
- Update root AGENTS.md: hook count 44→46, commit fcb90d92 , generated 2026-02-24
- Update src/AGENTS.md: core hooks 35→37, session hooks 21→23
- Update src/hooks/AGENTS.md: 46 hooks total, add modelFallback/noSisyphusGpt/noHephaestusNonGpt/runtimeFallback, jsonErrorRecovery moved to tool-guard (tier 2)
- Create src/tools/hashline-edit/AGENTS.md (93 lines): documents three-op model, LINE#ID format, execution pipeline
- Refresh timestamps: 2026-02-21→2026-02-24 on 28 files
- Update plugin/AGENTS.md hook composition counts
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-25 00:02:05 +09:00
YeonGyu-Kim
b1eccf7425
docs: update all 31 AGENTS.md files with current project state
2026-02-21 04:38:18 +09:00
VespianRex
f5f1d1d4c2
Fix model fallback across main/background/sync agents
2026-02-20 17:45:53 +02:00
YeonGyu-Kim
bd2e23584b
docs: update AGENTS.md metadata
...
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-19 10:46:40 +09:00
YeonGyu-Kim
3313ec3e4f
chore: regenerate AGENTS.md knowledge base
...
🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode ) assistance
2026-02-18 01:26:19 +09:00
YeonGyu-Kim
158ca3f22b
refactor: remove unused params/imports/types from lsp-tools, task-tools, delegate-task, skill-loader, context-window-monitor, plugin-config
2026-02-16 22:12:21 +09:00
YeonGyu-Kim
7186c368b9
fix(skill-loader): discover skills from .agents/skills/ directory
...
Add discoverProjectAgentsSkills() for project-level .agents/skills/ and
discoverGlobalAgentsSkills() for ~/.agents/skills/ — matching OpenCode's
native skill discovery paths (https://opencode.ai/docs/skills/ ).
Updated discoverAllSkills(), discoverSkills(), and createSkillContext()
to include these new sources with correct priority ordering.
Co-authored-by: dtateks <dtateks@users.noreply.github.com >
Closes #1818
2026-02-14 14:58:09 +09:00
Willy
6914f2fd04
fix(skills): use directory param instead of process.cwd() for project skill discovery
...
Project-level skills (.opencode/skills/ and .claude/skills/) were not
discovered in desktop app environments because the discover functions
hardcoded process.cwd() to resolve project paths. In desktop apps,
process.cwd() points to the app installation directory rather than the
user's project directory.
Add optional directory parameter to all project-level skill discovery
functions and thread ctx.directory from the plugin context through the
entire skill loading pipeline. Falls back to process.cwd() when
directory is not provided, preserving CLI compatibility.
2026-02-13 10:49:15 +08:00
YeonGyu-Kim
5a83c61d77
fix(skills): normalize windows separators for source globs
2026-02-13 11:17:18 +09:00
YeonGyu-Kim
0001bc87c2
feat(skills): load config sources in runtime discovery
2026-02-13 11:08:46 +09:00
YeonGyu-Kim
2fd847d88d
refactor: fix import path and update test fixtures
...
- Fix import path in opencode-skill-loader/loader.ts
- Update executor.test.ts fixtures
2026-02-10 11:41:45 +09:00
YeonGyu-Kim
c71f0aa700
merge: integrate origin/dev (5th merge) — resolve @path skill references in split file structure
2026-02-09 12:08:15 +09:00
YeonGyu-Kim
70ac962fca
feat: auto-resolve @path references in skill templates to absolute paths
...
Skill loaders previously only told agents that @path references are
relative to the skill directory, but agents often failed to resolve
them. Now @path/with/slash patterns are automatically expanded to
absolute paths during template construction.
2026-02-09 12:04:41 +09:00
YeonGyu-Kim
51ced65b5f
refactor(opencode-skill-loader): split loader and merger into focused modules
...
Extract skill loading pipeline into single-responsibility modules:
- skill-discovery.ts, skill-directory-loader.ts, skill-deduplication.ts
- loaded-skill-from-path.ts, loaded-skill-template-extractor.ts
- skill-template-resolver.ts, skill-definition-record.ts
- git-master-template-injection.ts, allowed-tools-parser.ts
- skill-mcp-config.ts, skill-resolution-options.ts
- merger/ directory for skill merging logic
2026-02-08 16:21:19 +09:00
YeonGyu-Kim
d3f8c7d288
Merge pull request #1615 from code-yeongyu/fix/1563-browser-provider-gating
...
fix(skill-loader): filter discovered skills by browserProvider (#1563 )
2026-02-07 20:04:08 +09:00
YeonGyu-Kim
747edcb6e6
fix(skill-loader): filter discovered skills by browserProvider ( #1563 )
2026-02-07 20:01:15 +09:00
YeonGyu-Kim
e4bbd6bf15
fix: allow string values for commit_footer config ( #919 )
2026-02-07 19:04:34 +09:00
YeonGyu-Kim
a644d38623
fix: properly restore env vars using delete when originally undefined
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
a459813888
Fix skill discovery priority and deduplication tests
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
18e941b6be
fix: correct skill priority order and improve test coverage
...
- Changed priority order to: opencode-project > opencode > project > user
(OpenCode Global skills now take precedence over legacy Claude project skills)
- Updated JSDoc comments to reflect correct priority order
- Fixed test to use actual discoverSkills() for deduplication verification
- Changed test assertion from 'source' to 'scope' (correct field name)
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
86ac39fb78
fix: include custom skills in delegate_task load_skills resolution
...
- Add deduplicateSkills() to prevent duplicate skill entries from multiple sources
- Priority order: opencode-project > project > opencode > user
- Add tests for deduplication behavior
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
224afadbdb
fix(skill-loader): respect disabledSkills in async skill resolution
2026-02-04 15:03:57 +09:00
YeonGyu-Kim
85932fadc7
test(skill-loader): fix test isolation by resetting skill content
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-04 14:51:56 +09:00
YeonGyu-Kim
f79f164cd5
fix(skill-loader): deterministic collision handling for skill names
...
- Separate directory and file entries, process directories first
- Use Map to deduplicate skills by name (first-wins)
- Directory skills (SKILL.md, {dir}.md) take precedence over file skills (*.md)
- Add test for collision scenario
Addresses Oracle P2 review feedback from PR #1254
2026-02-04 13:52:06 +09:00
YeonGyu-Kim
dee8cf1720
Merge pull request #1370 from misyuari/fix/refactor-skills
...
fix: update skill resolution to support disabled skills functionality
2026-02-04 13:47:26 +09:00
YeonGyu-Kim
8098e48658
Merge pull request #1254 from LeekJay/fix/nested-skill-discovery
...
feat(skill-loader): support nested skill directories
2026-02-04 13:40:03 +09:00
Muhammad Noor Misyuari
374acb3ac6
fix: update tests to reflect changes in skill resolution for async handling and disabled skills
2026-02-03 15:19:08 +07:00
Muhammad Noor Misyuari
2236a940f8
fix: implement disabled skills functionality in skill resolution
2026-02-03 15:19:01 +07:00
YeonGyu-Kim
f146aeff0f
refactor: major codebase cleanup - BDD comments, file splitting, bug fixes ( #1350 )
...
* style(tests): normalize BDD comments from '// #given' to '// given'
- Replace 4,668 Python-style BDD comments across 107 test files
- Patterns changed: // #given -> // given, // #when -> // when, // #then -> // then
- Also handles no-space variants: //#given -> // given
* fix(rules-injector): prefer output.metadata.filePath over output.title
- Extract file path resolution to dedicated output-path.ts module
- Prefer metadata.filePath which contains actual file path
- Fall back to output.title only when metadata unavailable
- Fixes issue where rules weren't injected when tool output title was a label
* feat(slashcommand): add optional user_message parameter
- Add user_message optional parameter for command arguments
- Model can now call: command='publish' user_message='patch'
- Improves error messages with clearer format guidance
- Helps LLMs understand correct parameter usage
* feat(hooks): restore compaction-context-injector hook
- Restore hook deleted in cbbc7bd0 for session compaction context
- Injects 7 mandatory sections: User Requests, Final Goal, Work Completed,
Remaining Tasks, Active Working Context, MUST NOT Do, Agent Verification State
- Re-register in hooks/index.ts and main plugin entry
* refactor(background-agent): split manager.ts into focused modules
- Extract constants.ts for TTL values and internal types (52 lines)
- Extract state.ts for TaskStateManager class (204 lines)
- Extract spawner.ts for task creation logic (244 lines)
- Extract result-handler.ts for completion handling (265 lines)
- Reduce manager.ts from 1377 to 755 lines (45% reduction)
- Maintain backward compatible exports
* refactor(agents): split prometheus-prompt.ts into subdirectory
- Move 1196-line prometheus-prompt.ts to prometheus/ subdirectory
- Organize prompt sections into separate files for maintainability
- Update agents/index.ts exports
* refactor(delegate-task): split tools.ts into focused modules
- Extract categories.ts for category definitions and routing
- Extract executor.ts for task execution logic
- Extract helpers.ts for utility functions
- Extract prompt-builder.ts for prompt construction
- Reduce tools.ts complexity with cleaner separation of concerns
* refactor(builtin-skills): split skills.ts into individual skill files
- Move each skill to dedicated file in skills/ subdirectory
- Create barrel export for backward compatibility
- Improve maintainability with focused skill modules
* chore: update import paths and lockfile
- Update prometheus import path after refactor
- Update bun.lock
* fix(tests): complete BDD comment normalization
- Fix remaining #when/#then patterns missed by initial sed
- Affected: state.test.ts, events.test.ts
---------
Co-authored-by: justsisyphus <justsisyphus@users.noreply.github.com >
2026-02-01 16:47:50 +09:00
LeekJay
64b29ea097
feat(skill-loader): support nested skill directories
...
Add recursive directory scanning to discover skills in nested directories
like superpowers (e.g., skills/superpowers/brainstorming/SKILL.md).
Changes:
- Add namePrefix, depth, and maxDepth parameters to loadSkillsFromDir
- Recurse into subdirectories when no SKILL.md found at current level
- Construct hierarchical skill names (e.g., 'superpowers/brainstorming')
- Limit recursion depth to 2 levels to prevent infinite loops
This enables compatibility with the superpowers plugin which installs
skills as: ~/.config/opencode/skills/superpowers/ -> superpowers/skills/
Fixes skill discovery for nested directory structures.
2026-01-30 00:39:43 +08:00
Thanh Nguyen
48f6c5e06d
fix(skill): support YAML array format for allowed-tools field ( #1163 )
...
Fixes #1021
The allowed-tools field in skill frontmatter now supports both formats:
- Space-separated string: 'allowed-tools: Read Write Edit Bash'
- YAML array: 'allowed-tools: [Read, Write, Edit, Bash]'
- Multi-line YAML array format also works
Previously, skills using YAML array format would silently fail to parse,
causing them to not appear in the <available_skills> list.
Changes:
- Updated parseAllowedTools() in loader.ts, async-loader.ts, and merger.ts
to handle both string and string[] types
- Updated SkillMetadata type to accept string | string[] for allowed-tools
- Added 4 test cases covering all allowed-tools formats
2026-01-28 16:26:34 +09:00