Added skills, shortcuts, and bugifixes++

This commit is contained in:
2026-02-18 11:58:45 +01:00
parent 09463d7620
commit 54a8c47df4
24 changed files with 3172 additions and 239 deletions

View File

@@ -33,6 +33,8 @@
<li><a href="#conversations">Managing Conversations</a></li>
<li><a href="#git-sync">Git Sync (Backup &amp; Sync)</a></li>
<li><a href="#email-handler">Email Handler (AI Assistant)</a></li>
<li><a href="#shortcuts">Shortcuts (Prompt Templates)</a></li>
<li><a href="#agent-skills">Agent Skills (SKILL.md)</a></li>
<li><a href="#keyboard-shortcuts">Keyboard Shortcuts</a></li>
<li><a href="#settings">Settings</a></li>
<li><a href="#system-prompts">System Prompts</a></li>
@@ -234,6 +236,18 @@
<dd>Enable/disable write permissions</dd>
</dl>
<h3>Shortcuts &amp; Skills Commands</h3>
<dl class="commands">
<dt>/shortcuts</dt>
<dd>Open the Shortcuts manager to create, edit, and manage your custom prompt template commands</dd>
<dt>/skills</dt>
<dd>Open the Agent Skills manager to install and manage SKILL.md-style behavioral instruction files</dd>
<dt>/&lt;your-command&gt;</dt>
<dd>Run any shortcut you've created. Example: <code>/summarize</code> to run your "Summarize" shortcut</dd>
</dl>
<h3>Settings Commands</h3>
<dl class="commands">
<dt>/config, /settings</dt>
@@ -929,6 +943,218 @@ AI Assistant</code></pre>
</div>
</section>
<!-- Shortcuts -->
<section id="shortcuts">
<h2>Shortcuts (Prompt Templates)</h2>
<p>Shortcuts are personal slash commands you define yourself. Each shortcut expands to a prompt template and can optionally ask for input. Think of them as saved prompts with custom command names.</p>
<div class="tip">
<strong>💡 Example:</strong> Create a <code>/summarize</code> shortcut that sends "Please summarize the following text concisely:\n\n{{input}}" — then just type <code>/summarize</code> and paste any text after it.
</div>
<h3>Creating a Shortcut</h3>
<ol>
<li>Type <code>/shortcuts</code> or go to Settings → Shortcuts tab</li>
<li>Click <strong>New Shortcut</strong></li>
<li>Set a command (e.g. <code>/summarize</code>)</li>
<li>Add a short description shown in the dropdown</li>
<li>Write your prompt template</li>
<li>Click <strong>Save</strong></li>
</ol>
<h3>Using {{input}} Placeholder</h3>
<p>If your template contains <code>{{input}}</code>, the AI waits for you to type something after the command. Your text replaces <code>{{input}}</code> before sending.</p>
<div class="example">
<strong>With {{input}}:</strong>
<pre><code>Command: /translate-no
Template: Translate the following text to Norwegian:\n\n{{input}}
Usage: /translate-no Hello, how are you today?
→ Sends: "Translate the following text to Norwegian:\n\nHello, how are you today?"</code></pre>
</div>
<p>If your template has <strong>no</strong> <code>{{input}}</code>, the shortcut executes immediately when selected — no extra input needed.</p>
<div class="example">
<strong>Without {{input}}:</strong>
<pre><code>Command: /hello
Template: Say hello in 5 different languages with a brief cultural note for each.
Usage: Type /hello → executes immediately</code></pre>
</div>
<h3>Shortcuts in the Command Dropdown</h3>
<p>Your shortcuts appear in the <code>/</code> dropdown with a <strong></strong> prefix. Type the first letters of your command to filter them.</p>
<h3>More Shortcut Examples</h3>
<div class="example">
<pre><code>/roast "Give me a light-hearted roast of this text: {{input}}"
/eli5 "Explain {{input}} as if I were 5 years old"
/debug "Find the bug in this code and explain the fix:\n\n{{input}}"
/tweet "Rewrite this as a punchy tweet under 280 chars: {{input}}"
/standup "Based on these notes, write a daily standup update: {{input}}"</code></pre>
</div>
<h3>Import &amp; Export</h3>
<ul>
<li><strong>Export All</strong> — saves all shortcuts as <code>shortcuts.json</code> in Downloads</li>
<li><strong>Import</strong> — load shortcuts from a JSON file (single shortcut or pack)</li>
<li>When importing a duplicate command, you can choose: <strong>Replace</strong>, <strong>Keep Both</strong>, or <strong>Skip</strong></li>
</ul>
</section>
<!-- Agent Skills -->
<section id="agent-skills">
<h2>Agent Skills (SKILL.md)</h2>
<p>Agent Skills are markdown instruction files that teach the AI how to behave. Active skills are automatically injected into the system prompt for every conversation — the AI reads them and applies the instructions when relevant.</p>
<p>Skills follow the <strong>SKILL.md open standard</strong>, making them compatible with a growing ecosystem of skill marketplaces and community collections.</p>
<div class="tip">
<strong>💡 Example:</strong> Install a "Code Review" skill and the AI will automatically apply code review best practices whenever you share code — no need to ask every time.
</div>
<h3>Installing a Skill</h3>
<ol>
<li>Type <code>/skills</code> or go to Settings → Skills tab</li>
<li>Click <strong>Import</strong> to load a <code>.md</code> file or a <code>.zip</code> skill bundle, <em>or</em></li>
<li>Click <strong>New Skill</strong> to write your own from scratch</li>
<li>Toggle the skill <strong>Active</strong> to inject it into the system prompt</li>
</ol>
<h3>SKILL.md Format</h3>
<p>A skill is a plain Markdown file. The first <code># Heading</code> becomes the skill name. Write instructions in natural language — the AI decides when to apply them.</p>
<div class="example">
<pre><code># Security Auditor
When reviewing code, always:
- Check for injection vulnerabilities (SQL, command, XSS)
- Look for insecure storage of credentials or secrets
- Verify authentication and authorization logic
- Suggest specific fixes, not just observations
- Rate severity: Critical / High / Medium / Low</code></pre>
</div>
<div class="example">
<pre><code># Norwegian Translator
Whenever the user asks you to translate something, translate it to Norwegian Bokmål.
- Maintain the original tone and register
- Keep technical terms in English unless there is a well-established Norwegian equivalent
- If the text is already in Norwegian, translate it to English instead</code></pre>
</div>
<h3>Writing Your Own Skills</h3>
<ul>
<li>Start with a <code># Title</code> — this becomes the skill name in the list</li>
<li>Use bullet points for rules and guidelines</li>
<li>Be specific: "always check X" is better than "be careful with X"</li>
<li>Keep skills focused on one area — create multiple skills rather than one huge one</li>
<li>The AI reads all active skills before responding — shorter, clearer skills work better</li>
</ul>
<h3>How Skills Are Applied</h3>
<p>Active skills are appended to the system prompt under an <strong>"Installed Skills"</strong> section. The AI sees them with every message and applies relevant guidance automatically. You can toggle skills on/off without deleting them.</p>
<h3>Skill Support Files</h3>
<p>Each skill can have data files attached — JSON, YAML, CSV, TXT, or any plain-text format. When a skill is active, its files are injected into the system prompt right after the skill's markdown content, so the AI can read and reason over them.</p>
<div class="tip">
<strong>💡 Example use cases:</strong>
<ul>
<li><code>news_sources.json</code> — a list of URLs for a "Daily AI News" skill</li>
<li><code>search_queries.md</code> — template search strings for a research skill</li>
<li><code>output_templates.md</code> — report formats for a writing skill</li>
<li><code>config.yaml</code> — parameters a skill should follow</li>
</ul>
</div>
<h4>Adding Files to a Skill</h4>
<ol>
<li>Open the skill editor (click <strong>Edit</strong> on any skill)</li>
<li>Scroll to the <strong>Files</strong> section at the bottom</li>
<li>Click <strong>Add File</strong> and select one or more text files</li>
<li>Files appear in a list with name and size</li>
<li>Click the trash icon next to any file to remove it</li>
</ol>
<h4>How Files Are Injected</h4>
<p>In the system prompt, each file is included as a labelled fenced code block immediately after the skill's instructions:</p>
<div class="example">
<pre><code>### Daily AI News
[skill instructions here]
**Skill Data Files:**
**news_sources.json:**
```json
{ "sources": [...] }
```
**search_queries.md:**
```md
...
```</code></pre>
</div>
<div class="warning">
<strong>⚠️ Token budget:</strong> Large files inflate the system prompt. A warning appears in the editor if any file exceeds 200 KB. For very large datasets, consider summarizing or splitting the data.
</div>
<h4>File Storage</h4>
<p>Files are stored locally at:</p>
<div class="example">
<pre><code>~/Library/Application Support/oAI/skills/&lt;skill-uuid&gt;/
├── news_sources.json
└── search_queries.md</code></pre>
</div>
<p>Deleting a skill also deletes its file directory automatically.</p>
<h3>Import &amp; Export</h3>
<h4>Importing</h4>
<p>Click <strong>Import</strong> in the Skills manager. You can select:</p>
<ul>
<li><strong><code>.md</code> file</strong> — plain SKILL.md-format file. The <code>#</code> heading becomes the skill name</li>
<li><strong><code>.zip</code> bundle</strong> — a skill with attached data files. The archive should contain a <code>skill.md</code> and any number of data files (in any directory structure — they are flattened into the skill's file directory)</li>
</ul>
<p>If a skill with the same name already exists, it is replaced. Data files from a zip are merged into the existing skill's directory.</p>
<h4>Exporting</h4>
<ul>
<li><strong>Export (single skill)</strong> — click the upload icon on a skill row:
<ul>
<li>Skill with no files → exports as <code>skill-name.md</code> to Downloads</li>
<li>Skill with files → exports as <code>skill-name.zip</code> containing <code>skill.md</code> + all data files</li>
</ul>
</li>
<li><strong>Export All</strong> — exports every skill using the same logic (each becomes either <code>.md</code> or <code>.zip</code>)</li>
</ul>
<div class="tip">
<strong>💡 Sharing skills:</strong> Zip bundles are the recommended format for sharing skills that include reference data — import the <code>.zip</code> directly on another machine to restore both the instructions and all attached files.
</div>
<h3>Finding Skills to Download</h3>
<p>The SKILL.md community has produced hundreds of ready-made skills you can import directly:</p>
<ul>
<li><a href="https://skill0.io/" target="_blank">skill0.io</a> — The original SKILL.md marketplace</li>
<li><a href="https://skillsmp.com" target="_blank">skillsmp.com</a> — Agent Skills Marketplace</li>
<li><a href="https://agent-skills.md" target="_blank">agent-skills.md</a> — Community skill directory</li>
<li><a href="https://github.com/anthropics/skills" target="_blank">github.com/anthropics/skills</a> — Anthropic's official skill library</li>
<li><a href="https://skills.sh/" target="_blank">skills.sh</a> — The Agent Skills Directory</li>
<li><a href="https://agentskills.io/home" target="_blank">agentskills.io</a> — Agent skills overview and search</li>
<li><a href="https://github.com/heilcheng/awesome-agent-skills" target="_blank">awesome-agent-skills</a> — Curated community list on GitHub</li>
</ul>
<div class="note">
<strong>Learn more:</strong> Read the <a href="https://www.mintlify.com/blog/skill-md" target="_blank">SKILL.md open standard article</a> to understand the format in depth, or browse the <a href="https://github.com/anthropics/skills" target="_blank">Anthropic skills repository</a> for high-quality examples.
</div>
</section>
<!-- Keyboard Shortcuts -->
<section id="keyboard-shortcuts">
<h2>Keyboard Shortcuts</h2>
@@ -999,6 +1225,81 @@ AI Assistant</code></pre>
<li>Configure gitignore respect</li>
</ul>
<h3>Sync Tab</h3>
<p>Configure Git synchronization for backing up and syncing conversations across devices.</p>
<ul>
<li><strong>Repository URL</strong> - Git repository URL (GitHub, GitLab, Gitea, or custom)</li>
<li><strong>Authentication Method</strong> - Choose SSH, Password, or Access Token</li>
<li><strong>Credentials</strong> - Enter username/password or access token (encrypted storage)</li>
<li><strong>Local Path</strong> - Where to clone the repository locally (default: ~/oAI-Sync)</li>
<li><strong>Auto-Save Settings</strong>:
<ul>
<li><strong>Enable Auto-Save</strong> - Automatically sync conversations</li>
<li><strong>Minimum Messages</strong> - Only sync conversations with at least N messages</li>
<li><strong>Triggers</strong> - Sync on app start, idle, goodbye phrases, model switch, or app quit</li>
</ul>
</li>
<li><strong>Manual Sync</strong>:
<ul>
<li><strong>Initialize Repository</strong> - Clone repository for first-time setup</li>
<li><strong>Sync Now</strong> - Full sync (export + pull + import + push)</li>
</ul>
</li>
<li><strong>Test Connection</strong> - Verify repository credentials and connectivity</li>
<li><strong>Sync Status</strong> - Shows last sync time, uncommitted changes, and remote status</li>
</ul>
<div class="tip">
<strong>💡 Tip:</strong> Use access tokens instead of passwords for GitHub (Settings → Developer settings → Personal access tokens). Enable auto-sync on your primary machine only to avoid conflicts.
</div>
<h3>Email Tab</h3>
<p>Configure AI-powered email auto-responder to automatically reply to incoming emails.</p>
<ul>
<li><strong>Enable Email Handler</strong> - Master toggle for email monitoring</li>
<li><strong>Subject Identifier</strong> - Filter emails by subject (e.g., <code>[JARVIS]</code>, case-sensitive)</li>
<li><strong>IMAP Settings</strong>:
<ul>
<li><strong>Server</strong> - IMAP server address (e.g., imap.gmail.com)</li>
<li><strong>Port</strong> - IMAP port (default: 993 for TLS)</li>
<li><strong>Username</strong> - Email account username (encrypted)</li>
<li><strong>Password</strong> - Email account password (encrypted, may need app-specific password)</li>
</ul>
</li>
<li><strong>SMTP Settings</strong>:
<ul>
<li><strong>Server</strong> - SMTP server address (e.g., smtp.gmail.com)</li>
<li><strong>Port</strong> - SMTP port (465 for direct TLS recommended, 587 for STARTTLS)</li>
</ul>
</li>
<li><strong>AI Configuration</strong>:
<ul>
<li><strong>Provider</strong> - Which AI provider to use for responses</li>
<li><strong>Model</strong> - Specific model to use</li>
<li><strong>Max Tokens</strong> - Response length limit</li>
<li><strong>Enable Online Mode</strong> - Allow AI to search the web for context</li>
</ul>
</li>
<li><strong>Rate Limiting</strong>:
<ul>
<li><strong>Enable Rate Limit</strong> - Prevent excessive email processing</li>
<li><strong>Max Per Hour</strong> - Maximum emails to process per hour</li>
</ul>
</li>
<li><strong>Test Connection</strong> - Verify IMAP/SMTP connectivity and credentials</li>
<li><strong>Email Log</strong> - View history of processed emails with success/error status</li>
</ul>
<div class="warning">
<strong>⚠️ Security Note:</strong> All email credentials are encrypted with AES-256-GCM. For Gmail, use app-specific passwords (not your main password). Keep your subject identifier private to prevent abuse.
</div>
<h3>Shortcuts Tab</h3>
<p>Create and manage personal prompt template commands. See <a href="#shortcuts">Shortcuts</a> section for full details.</p>
<h3>Skills Tab</h3>
<p>Manage SKILL.md-style behavioral instruction files injected into the system prompt. See <a href="#agent-skills">Agent Skills</a> section for full details.</p>
<h3>Appearance Tab</h3>
<ul>
<li>Adjust text sizes for input and dialog</li>
@@ -1011,6 +1312,9 @@ AI Assistant</code></pre>
<li>Set maximum tokens (response length limit)</li>
<li>Adjust temperature (creativity vs focus)</li>
<li>Configure system prompts (see below)</li>
<li><strong>Smart Context Selection</strong> - Intelligently select relevant messages to reduce token usage</li>
<li><strong>Semantic Search</strong> - Enable AI-powered conversation search using embeddings</li>
<li><strong>Progressive Summarization</strong> - Automatically summarize old portions of long conversations</li>
</ul>
</section>
@@ -1064,6 +1368,7 @@ AI Assistant</code></pre>
<li>Default Prompt (always included)</li>
<li>+ Your Custom Prompt (if set)</li>
<li>+ MCP Instructions (if MCP is enabled)</li>
<li>+ Active Agent Skills (if any skills are active)</li>
</ol>
<p><em>This combined prompt is sent with every message to ensure consistent behavior.</em></p>
</div>
@@ -1094,7 +1399,7 @@ AI Assistant</code></pre>
</main>
<footer>
<p>© 2026 oAI. For support or feedback, visit <a href="https://gitlab.pm/rune/oai-swift">gitlab.pm</a> or <a href="mailto:support@fubar.pm?subject=oAI Support&body=What can I help you with?">Contact Us</a>.</p>
<p>© 2026 oAI - Rune Olsen. For support or feedback, visit <a href="https://gitlab.pm/rune/oai-swift">gitlab.pm</a> or <a href="mailto:support@fubar.pm?subject=oAI Support&body=What can I help you with?">Contact Us</a>.</p>
</footer>
</div>
</body>