Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [12.0.0] - 2026-02-13

### Added
- Unified repository registration that auto-discovers and syncs both skills and hooks from the same source registration flow.
- First-class hooks lifecycle support across CLI and dashboard: catalog, list, install, uninstall, and sync operations.
- Dedicated Hooks dashboard section with compatibility guidance and per-hook install state/reporting.
- Official hooks source bootstrap support targeting `https://github.com/intelligentcode-ai/hooks.git`.

### Changed
- Dashboard/server plugin architecture now composes source-aware diagnostics and hooks management with clearer separation.
- Source refresh and sync flows now persist hooks under `~/.ica/<source>/hooks` while skills remain under `~/.ica/<source>/skills`.
- Multi-source cataloging and executor paths now treat hooks and skills as parallel, source-qualified artifacts.

## [11.0.1] - 2026-02-13

### Changed
Expand Down
21 changes: 20 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,25 @@ We welcome contributions in many forms:
4. Test your changes thoroughly
5. Submit a pull request to the `dev` branch

### Contributing Skills to Official Source

If you are contributing a skill bundle, you can validate and propose via ICA:

```bash
node dist/src/installer-cli/index.js skills validate --path=/path/to/skill --profile=official
node dist/src/installer-cli/index.js skills contribute-official --path=/path/to/skill --message="Add my-skill"
```

Expected skill structure:
- required: `SKILL.md`
- optional: `scripts/`, `references/`, `assets/`, and other files needed by the skill

Official contribution validation requires `SKILL.md` frontmatter fields:
- `name`
- `description`
- `category`
- `version`

## Branching Strategy

### Branch Structure
Expand Down Expand Up @@ -175,4 +194,4 @@ If you have questions about contributing:
2. Ask in GitHub Discussions
3. Create an issue with the `question` label

We appreciate all contributions, big and small. Thank you for helping make Intelligent Code Agents better!
We appreciate all contributions, big and small. Thank you for helping make Intelligent Code Agents better!
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ ICA supports multiple skill repositories side-by-side.

- Add official and custom repos (HTTPS/SSH)
- Keep each source cached locally under `~/.ica/<source-id>/skills`
- Keep each source publish workspace under `~/.ica/source-workspaces/<source-id>/repo`
- Select skills explicitly as `<source>/<skill>` to avoid ambiguity
- Remove a source without deleting already installed skills (they are marked orphaned)
- Use the same model in CLI and dashboard
- Configure per-source publishing defaults: `direct-push`, `branch-only`, or `branch-pr`

## Dashboard Preview

Expand Down Expand Up @@ -96,7 +98,10 @@ Commands:
- `ica sources remove --id=...`
- `ica sources auth --id=... --token=...`
- `ica sources refresh [--id=...]`
- `ica sources update --id=... --name=... --repo-url=...`
- `ica sources update --id=... --name=... --repo-url=... --publish-default-mode=branch-pr --default-base-branch=main --provider-hint=github --official-contribution-enabled=false`
- `ica skills validate --path=/path/to/skill --profile=personal`
- `ica skills publish --source=<source-id> --path=/path/to/skill --message="feat(skill): publish my-skill"`
- `ica skills contribute-official --path=/path/to/skill --message="Add my-skill"`
- `ica container mount-project --project-path=/path --confirm`

Source-qualified example:
Expand All @@ -110,6 +115,17 @@ node dist/src/installer-cli/index.js install --yes \

Legacy `--skills=<name>` is still accepted and resolves against the official source.

## Skill Publishing and Official Contribution

- `ica skills validate` supports `personal` and `official` profiles
- Personal publishing uses the source's configured default mode:
- `direct-push`: commits to base branch and pushes
- `branch-only`: pushes a feature branch
- `branch-pr`: pushes a feature branch and attempts PR creation when provider integration is available
- Official contribution uses strict validation and PR-oriented flow (defaults to official source base branch `dev`)
- Skill bundles are copied recursively and support `SKILL.md` + additional resources/assets/scripts/other files
- Source settings include `officialContributionEnabled` to mark official contribution targets

Custom repositories are persisted in `~/.ica/sources.json` (or `$ICA_STATE_HOME/sources.json` when set).

Downloaded source skills are materialized under `~/.ica/<source-id>/skills` (or `$ICA_STATE_HOME/<source-id>/skills`).
Expand Down Expand Up @@ -193,6 +209,7 @@ Tag releases from `main` (`vX.Y.Z`). The `release-sign` workflow:
## Documentation

- [Installation Guide](docs/installation-guide.md)
- [Skill Publishing Guide](docs/skill-publishing-guide.md)
- [Configuration Guide](docs/configuration-guide.md)
- [Workflow Guide](docs/workflow-guide.md)
- [Release Signing](docs/release-signing.md)
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
11.0.1
12.0.0
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ Deployment documentation in this repo now reflects only:
- verified bootstrap installers
- `ica` CLI workflows
- dashboard workflows
- skill publishing and official contribution workflows
2 changes: 2 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Skills are the primary interface for specialized capabilities. They are:
- Local `src/skills/*/SKILL.md` fallback has been removed as part of the repo split
- Installed to your agent home `skills/` directory (for example `~/.claude/skills/` or `~/.codex/skills/`)
- Invoked by skill name and intent (tool-dependent), with source-qualified IDs available as `<source>/<skill>`
- Source publish settings support per-source defaults (`direct-push` | `branch-only` | `branch-pr`) and provider hints
- Write-capable publish workspaces are separated from read-only sync caches under `~/.ica/source-workspaces/<source-id>/repo`

If one repository references another inside Git metadata, the precise term is **Git submodule** (not "subrepo").

Expand Down
40 changes: 40 additions & 0 deletions docs/configuration-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,25 @@ Notes:

## Key Settings

### Autonomy + Work-Item Orchestration
- `autonomy.level` (string) — L1/L2/L3 autonomy mode
- `autonomy.work_item_pipeline_enabled` (bool, default `true`) — auto-run `create-work-items` -> `plan-work-items` -> `run-work-items` when actionable findings/comments are detected
- `autonomy.work_item_pipeline_mode` (string, default `batch_auto`) — confirmation behavior for actionable finding ingestion
- `batch_auto`: no extra confirmation
- `batch_confirm`: one grouped confirmation
- `item_confirm`: per-item confirmation

Example:

```json
{
"autonomy": {
"work_item_pipeline_enabled": true,
"work_item_pipeline_mode": "batch_auto"
}
}
```

### Git
- `git.privacy` (bool) — strip AI mentions from commits/PRs
- `git.privacy_patterns` (array)
Expand All @@ -88,3 +107,24 @@ Notes:

### Models
Model selection is **user‑controlled via Claude Code settings** (`.claude/settings.json` or `~/.claude/settings.json`) or `/model`.

## Source Registry Publish Settings

Skill publishing defaults are stored in the source registry (`~/.ica/sources.json` or `$ICA_STATE_HOME/sources.json`), not in `ica.config.json`.

Per-source publish fields:

- `publishDefaultMode`: `direct-push` | `branch-only` | `branch-pr`
- `defaultBaseBranch`: target branch for publish operations
- `providerHint`: `github` | `gitlab` | `bitbucket` | `unknown`
- `officialContributionEnabled`: marks a source as eligible for official contribution flow

Update via CLI:

```bash
node dist/src/installer-cli/index.js sources update --id=my-source \
--publish-default-mode=branch-pr \
--default-base-branch=main \
--provider-hint=github \
--official-contribution-enabled=false
```
5 changes: 3 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
1. [Installation Guide](installation-guide.md)
2. [Configuration Guide](configuration-guide.md)
3. [Workflow Guide](workflow-guide.md)
4. [MCP Integration (Claude Code)](mcp-integration.md)
5. [MCP Proxy (ICA-Owned)](mcp-proxy.md)
4. [Skill Publishing Guide](skill-publishing-guide.md)
5. [MCP Integration (Claude Code)](mcp-integration.md)
6. [MCP Proxy (ICA-Owned)](mcp-proxy.md)

## Core Concepts
- [Roles and Skills](skills-reference.md)
Expand Down
31 changes: 31 additions & 0 deletions docs/installation-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,38 @@ node dist/src/installer-cli/index.js catalog
node dist/src/installer-cli/index.js sources list
node dist/src/installer-cli/index.js sources add --repo-url=https://github.com/intelligentcode-ai/skills.git
node dist/src/installer-cli/index.js sources add --repo-path=. # uses current directory as local source
node dist/src/installer-cli/index.js sources update --id=my-source --publish-default-mode=branch-pr --default-base-branch=main --provider-hint=github
node dist/src/installer-cli/index.js sources refresh
node dist/src/installer-cli/index.js skills validate --path=/path/to/skill --profile=personal
node dist/src/installer-cli/index.js skills publish --source=my-source --path=/path/to/skill
node dist/src/installer-cli/index.js skills contribute-official --path=/path/to/skill
```

## Skill Publishing Quick Start

1. Add or update a source:

```bash
node dist/src/installer-cli/index.js sources add --repo-url=https://github.com/your-org/skills.git --name=my-source
node dist/src/installer-cli/index.js sources update --id=my-source \
--publish-default-mode=branch-pr \
--default-base-branch=main \
--provider-hint=github \
--official-contribution-enabled=false
```

2. Validate and publish:

```bash
node dist/src/installer-cli/index.js skills validate --path=/path/to/skill --profile=personal
node dist/src/installer-cli/index.js skills publish --source=my-source --path=/path/to/skill
```

3. Propose to official source:

```bash
node dist/src/installer-cli/index.js skills validate --path=/path/to/skill --profile=official
node dist/src/installer-cli/index.js skills contribute-official --path=/path/to/skill
```

Non-interactive example:
Expand Down
159 changes: 159 additions & 0 deletions docs/skill-publishing-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# Skill Publishing Guide

This guide covers how to validate and publish local skill bundles to your own repositories, and how to propose skills to the official source.

## What This Supports

- Local skill bundles from any directory (existing repo, downloaded folder, dedicated local folder)
- Recursive bundle publishing (`SKILL.md` plus scripts/references/assets/other files)
- Per-source publishing defaults:
- `direct-push`
- `branch-only`
- `branch-pr`
- Official contribution flow with strict validation and PR-oriented publishing

## Bundle Requirements

Required:

- `SKILL.md`

Recommended:

- YAML frontmatter in `SKILL.md` with:
- `name`
- `description`
- `category`
- `version`

Supported additional content:

- `scripts/`
- `references/`
- `assets/`
- other files/folders needed by the skill

## Validation Profiles

### Personal

- Hard failures:
- missing `SKILL.md`
- invalid skill name
- path/symlink escape
- blocked files/secrets/size limits
- Warnings:
- missing recommended frontmatter fields
- nonstandard top-level entries

### Official

- Includes all personal hard failures
- Additional hard failures:
- missing frontmatter block
- missing required fields (`name`, `description`, `category`, `version`)
- broken local links in `SKILL.md`

## Source Publish Settings

Configure per source:

- `publishDefaultMode`: `direct-push` | `branch-only` | `branch-pr`
- `defaultBaseBranch`: typically `main` for personal repos
- `providerHint`: `github` | `gitlab` | `bitbucket` | `unknown`
- `officialContributionEnabled`: enables use as official contribution target

Examples:

```bash
node dist/src/installer-cli/index.js sources update \
--id=my-source \
--publish-default-mode=branch-pr \
--default-base-branch=main \
--provider-hint=github \
--official-contribution-enabled=false
```

```bash
node dist/src/installer-cli/index.js sources update \
--id=official-skills \
--publish-default-mode=branch-pr \
--default-base-branch=dev \
--provider-hint=github \
--official-contribution-enabled=true
```

## Personal Publishing Flow

1. Validate bundle:

```bash
node dist/src/installer-cli/index.js skills validate \
--path=/path/to/skill \
--profile=personal
```

2. Publish using source defaults:

```bash
node dist/src/installer-cli/index.js skills publish \
--source=my-source \
--path=/path/to/skill \
--message="feat(skill): publish my-skill"
```

Behavior by mode:

- `direct-push`: commit and push base branch
- `branch-only`: push feature branch only
- `branch-pr`: push feature branch and attempt PR creation when provider integration is available

## Official Contribution Flow

1. Validate with strict profile:

```bash
node dist/src/installer-cli/index.js skills validate \
--path=/path/to/skill \
--profile=official
```

2. Submit contribution:

```bash
node dist/src/installer-cli/index.js skills contribute-official \
--path=/path/to/skill \
--message="Add my-skill"
```

Notes:

- Default official base branch is `dev`
- When GitHub integration is available, ICA attempts to create PR-ready output
- For provider/API limitations, ICA returns compare/manual-PR details

## Dashboard Workflow

In the dashboard `Settings` tab:

1. Configure source publish settings
2. Open `Skill Publishing`
3. Set local path and optional skill name/message
4. Run `Validate skill`
5. Run `Publish to source` or `Contribute official`
6. Review returned branch/commit/PR or compare URL

## Storage Paths

- Source registry: `~/.ica/sources.json` (or `$ICA_STATE_HOME/sources.json`)
- Read-only synced skills cache: `~/.ica/<source-id>/skills`
- Write-capable publish workspace: `~/.ica/source-workspaces/<source-id>/repo`

## Safety Controls

Publishing blocks risky content:

- secret-like tokens in text files
- blocked credential file patterns
- path traversal and symlink escapes
- oversized file/bundle limits
Loading