feat: rename to Agentfiles, add release files

- Rename plugin ID from obsidian-agent-skills to agentfiles
- Add versions.json, LICENSE (MIT), README.md
- Update all class names and display text
This commit is contained in:
Railly 2026-03-28 08:40:21 -05:00
parent 7306bddb0a
commit b15648d55e
9 changed files with 99 additions and 22 deletions

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Railly Hugo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

53
README.md Normal file
View file

@ -0,0 +1,53 @@
# Agentfiles
Discover, organize, and edit AI agent skills, commands, and agents across Claude Code, Cursor, Codex, Windsurf, and more — from inside Obsidian.
## Features
- **Multi-tool discovery** — Scans 13 tools: Claude Code, Cursor, Windsurf, Codex, Copilot, Amp, OpenCode, Aider, and more
- **Three-column view** — Sidebar filters, skill list with search, and detail panel with markdown preview
- **Built-in editor** — Edit skills in place with Cmd+S save
- **Real-time file watching** — Automatically detects changes to skill files
- **Full-text search** — Search across skill names, descriptions, and content
- **Frontmatter metadata** — View parsed YAML properties at a glance
- **Token estimation** — See character count and estimated token usage per skill
- **Tool logos** — Real SVG logos for each supported coding agent
- **Favorites & collections** — Organize skills your way
- **Symlink deduplication** — Same skill installed in multiple tools shows once
## Supported tools
| Tool | Skills | Commands | Agents |
|------|--------|----------|--------|
| Claude Code | `~/.claude/skills/` | `~/.claude/commands/` | `~/.claude/agents/` |
| Cursor | `~/.cursor/skills/` | | `~/.cursor/agents/` |
| Codex | `~/.codex/skills/` | | `~/.codex/agents/` |
| Windsurf | `~/.codeium/windsurf/memories/` | | |
| Copilot | `~/.copilot/skills/` | | |
| Amp | `~/.config/amp/skills/` | | |
| OpenCode | `~/.config/opencode/skills/` | | |
| Global | `~/.agents/skills/` | | |
## Installation
Search **Agentfiles** in Obsidian's Community plugins browser, or install manually:
1. Download `main.js`, `manifest.json`, and `styles.css` from the [latest release](https://github.com/Railly/obsidian-agent-skills/releases)
2. Create `~/.obsidian/plugins/agentfiles/` in your vault
3. Copy the three files into that folder
4. Enable the plugin in Settings > Community plugins
## Usage
1. Click the CPU icon in the ribbon, or run **Agentfiles: Open Agentfiles** from the command palette
2. Browse skills by tool or type in the sidebar
3. Click any skill to preview its content
4. Click the pencil icon to edit, Cmd+S to save
## Desktop only
This plugin requires desktop Obsidian (macOS, Windows, Linux) because it reads files outside your vault.
## License
MIT

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,9 @@
{
"id": "obsidian-agent-skills",
"name": "Agent Skills",
"id": "agentfiles",
"name": "Agentfiles",
"version": "0.1.0",
"minAppVersion": "1.4.11",
"description": "Discover, organize, and edit AI coding agent skills across Claude Code, Cursor, Codex, Windsurf, and more.",
"description": "Discover, organize, and edit AI agent skills, commands, and agents across Claude Code, Cursor, Codex, Windsurf, and more.",
"author": "Railly Hugo",
"authorUrl": "https://railly.dev",
"isDesktopOnly": true

View file

@ -1,5 +1,5 @@
{
"name": "obsidian-agent-skills",
"name": "agentfiles",
"version": "0.1.0",
"description": "AI Skills Manager for Obsidian",
"main": "main.js",

View file

@ -1,12 +1,12 @@
import { Plugin, type WorkspaceLeaf } from "obsidian";
import { AgentSkillsView, VIEW_TYPE } from "./views/main-view";
import { Plugin } from "obsidian";
import { AgentfilesView, VIEW_TYPE } from "./views/main-view";
import { SkillStore } from "./store";
import { SkillWatcher } from "./watcher";
import { getWatchPaths } from "./scanner";
import { AgentSkillsSettingTab } from "./settings";
import { AgentfilesSettingTab } from "./settings";
import { DEFAULT_SETTINGS, type ChopsSettings } from "./types";
export default class AgentSkillsPlugin extends Plugin {
export default class AgentfilesPlugin extends Plugin {
settings: ChopsSettings = DEFAULT_SETTINGS;
store: SkillStore = new SkillStore();
private watcher: SkillWatcher | null = null;
@ -15,7 +15,7 @@ export default class AgentSkillsPlugin extends Plugin {
await this.loadSettings();
this.registerView(VIEW_TYPE, (leaf) =>
new AgentSkillsView(
new AgentfilesView(
leaf,
this.store,
this.settings,
@ -23,15 +23,15 @@ export default class AgentSkillsPlugin extends Plugin {
)
);
this.addRibbonIcon("cpu", "Agent Skills", () => this.activateView());
this.addRibbonIcon("cpu", "Agentfiles", () => this.activateView());
this.addCommand({
id: "open-agent-skills",
name: "Open Agent Skills",
id: "open-agentfiles",
name: "Open Agentfiles",
callback: () => this.activateView(),
});
this.addSettingTab(new AgentSkillsSettingTab(this.app, this));
this.addSettingTab(new AgentfilesSettingTab(this.app, this));
this.refreshStore();
this.startWatcher();

View file

@ -1,12 +1,12 @@
import { PluginSettingTab, Setting, type App } from "obsidian";
import { TOOL_CONFIGS } from "./tool-configs";
import type { ChopsSettings } from "./types";
import type AgentSkillsPlugin from "./main";
import type AgentfilesPlugin from "./main";
export class AgentSkillsSettingTab extends PluginSettingTab {
plugin: AgentSkillsPlugin;
export class AgentfilesSettingTab extends PluginSettingTab {
plugin: AgentfilesPlugin;
constructor(app: App, plugin: AgentSkillsPlugin) {
constructor(app: App, plugin: AgentfilesPlugin) {
super(app, plugin);
this.plugin = plugin;
}
@ -15,7 +15,7 @@ export class AgentSkillsSettingTab extends PluginSettingTab {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Agent Skills" });
containerEl.createEl("h2", { text: "Agentfiles" });
new Setting(containerEl)
.setName("File watching")

View file

@ -5,9 +5,9 @@ import { SidebarPanel } from "./sidebar";
import { ListPanel } from "./list";
import { DetailPanel } from "./detail";
export const VIEW_TYPE = "agent-skills-view";
export const VIEW_TYPE = "agentfiles-view";
export class AgentSkillsView extends ItemView {
export class AgentfilesView extends ItemView {
private store: SkillStore;
private settings: ChopsSettings;
private saveSettings: () => Promise<void>;
@ -37,7 +37,7 @@ export class AgentSkillsView extends ItemView {
}
getDisplayText(): string {
return "Agent Skills";
return "Agentfiles";
}
getIcon(): string {

3
versions.json Normal file
View file

@ -0,0 +1,3 @@
{
"0.1.0": "1.4.11"
}