Skip to content

Add support for syncing skills directory#46

Open
iHildy wants to merge 4 commits intomainfrom
feat-sync-skills-directory-8083669518881400648
Open

Add support for syncing skills directory#46
iHildy wants to merge 4 commits intomainfrom
feat-sync-skills-directory-8083669518881400648

Conversation

@iHildy
Copy link
Owner

@iHildy iHildy commented Mar 14, 2026

Add support for syncing the skills directory in opencode-synced. Added a new includeSkills configuration flag (defaulting to true) and updated the sync plan to include the ~/.config/opencode/skills/ directory. Updated the tool arguments, status command, and documentation. Verified with unit tests.

Fixes #40


PR created automatically by Jules for task 8083669518881400648 started by @iHildy

Add `includeSkills` option to sync configuration, which defaults to true.
This allows the `~/.config/opencode/skills/` directory to be synced
alongside other configuration files and directories.

Updated:
- `src/sync/config.ts`: Added `includeSkills` to interfaces and normalization logic.
- `src/sync/paths.ts`: Added `skills` directory to sync plan items.
- `src/index.ts`: Exposed `includeSkills` in `opencode_sync` tool arguments.
- `src/sync/service.ts`: Handled `includeSkills` in init and status commands.
- `README.md`: Documented the new option and synced path.
- `src/sync/config.test.ts` & `src/sync/paths.test.ts`: Added tests for the new feature.

Co-authored-by: iHildy <25069719+iHildy@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the opencode-synced tool by integrating the synchronization of the user's skills directory. This change ensures that skill definitions are automatically backed up and restored, improving the consistency of user environments. The new configuration option provides flexibility for users who may not wish to sync this specific directory, while maintaining a sensible default for broader utility.

Highlights

  • Skills Directory Sync: Added support for syncing the ~/.config/opencode/skills/ directory, which is now included in the sync plan by default.
  • Configuration Option: Introduced a new includeSkills boolean configuration flag, defaulting to true, allowing users to explicitly enable or disable skills directory synchronization.
  • Tooling and Documentation Updates: Updated the command-line tool arguments, the status command output, and the README.md documentation to reflect the new includeSkills option and the inclusion of the skills directory.
  • Unit Test Coverage: Added unit tests to verify the default behavior of includeSkills and its correct integration into the sync plan, ensuring the skills directory is included by default and can be disabled.
Changelog
  • README.md
    • Updated the example opencode-synced.jsonc configuration to include includeSkills: true.
    • Added ~/.config/opencode/skills/ to the list of directories synced by default.
  • src/index.ts
    • Added includeSkills boolean option to the CLI arguments schema.
    • Passed the includeSkills argument value to the opencodeConfigSync plugin.
  • src/sync/config.test.ts
    • Added a test case to ensure includeSkills is enabled by default when no configuration is provided.
  • src/sync/config.ts
    • Added includeSkills property to the SyncConfig and NormalizedSyncConfig interfaces.
    • Modified normalizeSyncConfig to set includeSkills to true by default if not explicitly set to false.
  • src/sync/paths.test.ts
    • Added a test to buildSyncPlan to confirm that the skills directory is included by default and can be explicitly disabled.
  • src/sync/paths.ts
    • Defined a new constant SKILLS_DIR for the 'skills' directory name.
    • Modified buildSyncPlan to conditionally add the ~/.config/opencode/skills/ directory to the sync plan based on the includeSkills configuration.
  • src/sync/service.ts
    • Added includeSkills to the InitOptions interface.
    • Updated the createSyncService function to display the status of Skills syncing in the output.
    • Modified buildConfigFromInit to initialize includeSkills to true by default.
Activity
  • PR created automatically by Jules for task 8083669518881400648, started by @iHildy.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Add `includeSkills` option to sync configuration, which defaults to true.
This allows the `~/.config/opencode/skills/` directory to be synced
alongside other configuration files and directories.

Updated:
- `src/sync/config.ts`: Added `includeSkills` to interfaces and normalization logic.
- `src/sync/paths.ts`: Added `skills` directory to sync plan items.
- `src/index.ts`: Exposed `includeSkills` in `opencode_sync` tool arguments.
- `src/sync/service.ts`: Handled `includeSkills` in init and status commands.
- `README.md`: Documented the new option and synced path.
- `src/sync/config.test.ts` & `src/sync/paths.test.ts`: Added tests for the new feature.

Co-authored-by: iHildy <25069719+iHildy@users.noreply.github.com>
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request successfully adds support for syncing the skills directory. The changes are comprehensive, covering configuration, sync logic, command-line arguments, status reporting, and documentation. The new functionality is also backed by unit tests. The implementation is consistent with existing patterns in the codebase. I have one minor suggestion to improve code clarity.

Comment on lines +228 to +236
if (config.includeSkills !== false) {
items.push({
localPath: path.join(configRoot, SKILLS_DIR),
repoPath: path.join(repoConfigRoot, SKILLS_DIR),
type: 'dir',
isSecret: false,
isConfigFile: false,
});
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The config parameter is of type NormalizedSyncConfig, where includeSkills is a boolean. The check config.includeSkills !== false is therefore equivalent to simply config.includeSkills. Using the simpler form improves readability.

For context, the same pattern is used for includeModelFavorites on line 218, which could also be simplified.

Suggested change
if (config.includeSkills !== false) {
items.push({
localPath: path.join(configRoot, SKILLS_DIR),
repoPath: path.join(repoConfigRoot, SKILLS_DIR),
type: 'dir',
isSecret: false,
isConfigFile: false,
});
}
if (config.includeSkills) {
items.push({
localPath: path.join(configRoot, SKILLS_DIR),
repoPath: path.join(repoConfigRoot, SKILLS_DIR),
type: 'dir',
isSecret: false,
isConfigFile: false,
});
}

@jules-relay
Copy link

jules-relay bot commented Mar 14, 2026

🤖 Review Jules Relay

I found 1 Gemini suggestion so far.

Type /relay batch to send all suggestions to Jules.

google-labs-jules bot and others added 2 commits March 14, 2026 22:02
Add `includeSkills` option to sync configuration, which defaults to true.
This allows the `~/.config/opencode/skills/` directory to be synced
alongside other configuration files and directories.

Updated:
- `src/sync/config.ts`: Added `includeSkills` to interfaces and normalization logic.
- `src/sync/paths.ts`: Added `skills` directory to sync plan items.
- `src/index.ts`: Exposed `includeSkills` in `opencode_sync` tool arguments.
- `src/sync/service.ts`: Handled `includeSkills` in init and status commands.
- `README.md`: Documented the new option and synced path.
- `src/sync/config.test.ts` & `src/sync/paths.test.ts`: Added tests for the new feature.

Co-authored-by: iHildy <25069719+iHildy@users.noreply.github.com>
Add `includeSkills` option to sync configuration, which defaults to true.
This allows the `~/.config/opencode/skills/` directory to be synced
alongside other configuration files and directories.

Updated:
- `src/sync/config.ts`: Added `includeSkills` to interfaces and normalization logic.
- `src/sync/paths.ts`: Added `skills` directory to sync plan items.
- `src/index.ts`: Exposed `includeSkills` in `opencode_sync` tool arguments.
- `src/sync/service.ts`: Handled `includeSkills` in init and status commands.
- `README.md`: Documented the new option and synced path.
- `src/sync/config.test.ts` & `src/sync/paths.test.ts`: Added tests for the new feature.

Co-authored-by: iHildy <25069719+iHildy@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Add support for syncing skills directory

1 participant