From b6b8180625e3d452192e4631b8d82b88d111e535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=84=E3=83=B3=E3=83=87=E3=83=AC?= Date: Sun, 15 Feb 2026 17:30:26 +0200 Subject: [PATCH 1/3] feat: Make Skillware pip-installable and add release workflow (closes #7) --- .github/workflows/publish.yml | 35 +++ README.md | 12 +- arpa_skillware.egg-info/PKG-INFO | 218 +++++++++++++++++++ arpa_skillware.egg-info/SOURCES.txt | 19 ++ arpa_skillware.egg-info/dependency_links.txt | 1 + arpa_skillware.egg-info/requires.txt | 11 + arpa_skillware.egg-info/top_level.txt | 2 + docs/PUBLISHING.md | 47 ++++ pyproject.toml | 38 ++++ skills/office/pdf_form_filler/manifest.yaml | 2 +- 10 files changed, 381 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/publish.yml create mode 100644 arpa_skillware.egg-info/PKG-INFO create mode 100644 arpa_skillware.egg-info/SOURCES.txt create mode 100644 arpa_skillware.egg-info/dependency_links.txt create mode 100644 arpa_skillware.egg-info/requires.txt create mode 100644 arpa_skillware.egg-info/top_level.txt create mode 100644 docs/PUBLISHING.md create mode 100644 pyproject.toml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..fe62046 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,35 @@ +name: Publish to PyPI + +on: + release: + types: [published] + +jobs: + pypi-publish: + name: Upload release to PyPI + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/skillware + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + contents: read + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install build + + - name: Build package + run: python -m build + + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/README.md b/README.md index 39686e4..5eea3fc 100644 --- a/README.md +++ b/README.md @@ -86,12 +86,18 @@ Skillware/ ### 1. Installation -Clone the repository and install the dependencies. +You can install Skillware directly from GitHub: ```bash -git clone https://github.com/arpa/skillware.git +pip install git+https://github.com/arpahls/skillware.git +``` + +Or for development, clone the repository and install in editable mode: + +```bash +git clone https://github.com/arpahls/skillware.git cd skillware -pip install -r requirements.txt +pip install -e . ``` > **Note**: Individual skills may have their own dependencies. The `SkillLoader` validates `manifest.yaml` and warns of missing packages (e.g., `requests`, `pandas`) upon loading a skill. diff --git a/arpa_skillware.egg-info/PKG-INFO b/arpa_skillware.egg-info/PKG-INFO new file mode 100644 index 0000000..e0b367d --- /dev/null +++ b/arpa_skillware.egg-info/PKG-INFO @@ -0,0 +1,218 @@ +Metadata-Version: 2.4 +Name: arpa-skillware +Version: 0.1.0 +Summary: A framework for modular, self-contained AI skills. +Author-email: ARPA Hellenic Logic Systems +License: MIT License + + Copyright (c) 2026 ARPA Hellenic Logical Systems + + 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. + +Project-URL: Homepage, https://arpacorp.net +Project-URL: Repository, https://github.com/arpahls/skillware +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Requires-Python: >=3.10 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: requests +Requires-Dist: pyyaml +Requires-Dist: anthropic +Requires-Dist: google-generativeai +Requires-Dist: pymupdf +Provides-Extra: dev +Requires-Dist: pytest; extra == "dev" +Requires-Dist: pytest-mock; extra == "dev" +Requires-Dist: flake8; extra == "dev" +Requires-Dist: black; extra == "dev" +Dynamic: license-file + +
+ Skillware Logo + + A Python framework for modular, self-contained skill management for machines. +
+ +
+ +
+ License + Python Version + PyPI Version +
+ +
+ +
+ Mission • + Architecture • + Quick Start • + Documentation • + Contributing • + Comparison • + Contact +
+ +--- + +**Skillware** is an open-source framework and registry for modular, actionable Agent capabilities. It treats **Skills** as installable content, decoupling capability from intelligence. Just as `apt-get` installs software and `pip` installs libraries, `skillware` installs *know-how* for AI agents. + +> "I know Kung Fu." - Neo + +## Mission + +The AI ecosystem is fragmented. Developers often re-invent tool definitions, system prompts, and safety rules for every project. **Skillware** supplies a standard to package capabilities into self-contained units that work across **Gemini**, **Claude**, **GPT**, and **Llama**. + +A **Skill** in this framework provides everything an Agent needs to master a domain: + +1. **Logic**: Executable Python code. +2. **Cognition**: System instructions and "cognitive maps". +3. **Governance**: Constitution and safety boundaries. +4. **Interface**: Standardized schemas for LLM tool calling. + +## Repository Structure + +This repository is organized into a core framework, a registry of skills, and documentation. + +```text +Skillware/ +├── skillware/ # Core Framework Package +│ └── core/ +│ ├── base_skill.py # Abstract Base Class for skills +│ ├── loader.py # Universal Skill Loader & Model Adapter +│ └── env.py # Environment Management +├── skills/ # Skill Registry (Domain-driven) +│ └── finance/ +│ └── wallet_screening/ +│ ├── skill.py # Logic +│ ├── manifest.yaml # Metadata & Constitution +│ ├── instructions.md # Cognitive Map +│ ├── card.json # UI Presentation +│ ├── data/ # Integrated Knowledge Base +│ └── maintenance/ # Maintenance Tools +│ └── office/ +│ └── pdf_form_filler/ +│ ├── skill.py # Logic +│ ├── manifest.yaml # Metadata +│ ├── instructions.md # Cognitive Map +│ ├── utils.py # PDF Processing +│ └── card.json # UI Presentation +├── templates/ # New Skill Templates +│ └── python_skill/ # Standard Python Skill Template +├── examples/ # Reference Implementations +│ ├── gemini_wallet_check.py # Google Gemini Integration +│ ├── claude_wallet_check.py # Anthropic Claude Integration +│ ├── gemini_pdf_form_filler.py +│ └── claude_pdf_form_filler.py +├── docs/ # Comprehensive Documentation +│ ├── introduction.md # Philosophy & Design +│ ├── usage/ # Integration Guides +│ └── skills/ # Skill Reference Cards +└── COMPARISON.md # Comparison vs. Anthropic Skills / MCP +``` + +## Quick Start + +### 1. Installation + +Clone the repository and install the dependencies. + +```bash +git clone https://github.com/arpa/skillware.git +cd skillware +pip install -r requirements.txt +``` + +> **Note**: Individual skills may have their own dependencies. The `SkillLoader` validates `manifest.yaml` and warns of missing packages (e.g., `requests`, `pandas`) upon loading a skill. + +### 2. Configuration + +Create a `.env` file with your API keys (e.g., Google Gemini API Key): + +```ini +GOOGLE_API_KEY="your_key" +``` + +### 3. Usage Example (Gemini) + +```python +import google.generativeai as genai +from skillware.core.loader import SkillLoader +from skillware.core.env import load_env_file + +# Load Environment +load_env_file() + +# 1. Load the Skill +# The loader reads the code, manifest, and instructions automatically +skill_bundle = SkillLoader.load_skill("finance/wallet_screening") + +# 2. Model & Chat Setup +model = genai.GenerativeModel( + 'gemini-2.5-flash', + tools=[SkillLoader.to_gemini_tool(skill_bundle)], # The "Adapter" + system_instruction=skill_bundle['instructions'] # The "Mind" +) +chat = model.start_chat(enable_automatic_function_calling=True) + +# 3. Agent Loop +# The SDK handles the loop: model -> tool call -> execution -> result -> model reply. +response = chat.send_message("Screen wallet 0xd8dA... for risks.") +print(response.text) +``` + +## Documentation + +* **[Core Logic & Philosophy](docs/introduction.md)**: Details on how Skillware decouples Logic, Cognition, and Governance. +* **[Usage Guide: Gemini](docs/usage/gemini.md)**: Integration with Google's GenAI SDK. +* **[Usage Guide: Claude](docs/usage/claude.md)**: Integration with Anthropic's SDK. +* **[Skill Library](docs/skills/README.md)**: Available capabilities. + +## Contributing + +We are building the "App Store" for Agents and require professional, robust, and safe skills. + +Please read **[CONTRIBUTING.md](CONTRIBUTING.md)** for guidelines on folder structure, manifest schemas, and safety constitutions. + +## Comparison + +Skillware differs from the Model Context Protocol (MCP) or Anthropic's Skills repository in the following ways: + +* **Model Agnostic**: Native adapters for Gemini, Claude, and OpenAI. +* **Code-First**: Skills are executable Python packages, not just server specs. +* **Runtime-Focused**: Provides tools for the application, not just recipes for an IDE. + +[Read the full comparison here](COMPARISON.md). + +## Contact + +For questions, suggestions, or contributions, please open an issue or reach out to us: + +* **Email**: [skillware-os@arpacorp.net](mailto:skillware-os@arpacorp.net) +* **Issues**: [GitHub Issues](https://github.com/arpahls/skillware/issues) + +--- + +
+ ARPA Logo +
+ Built & Maintained by ARPA Hellenic Logical Systems & the Community +
diff --git a/arpa_skillware.egg-info/SOURCES.txt b/arpa_skillware.egg-info/SOURCES.txt new file mode 100644 index 0000000..45b5bf1 --- /dev/null +++ b/arpa_skillware.egg-info/SOURCES.txt @@ -0,0 +1,19 @@ +LICENSE +README.md +pyproject.toml +arpa_skillware.egg-info/PKG-INFO +arpa_skillware.egg-info/SOURCES.txt +arpa_skillware.egg-info/dependency_links.txt +arpa_skillware.egg-info/requires.txt +arpa_skillware.egg-info/top_level.txt +skills/finance/wallet_screening/__init__.py +skills/finance/wallet_screening/skill.py +skills/finance/wallet_screening/maintenance/normalization_tool.py +skills/finance/wallet_screening/maintenance/normalize_uniswap_trm.py +skills/office/pdf_form_filler/skill.py +skills/office/pdf_form_filler/utils.py +skillware/__init__.py +skillware/core/__init__.py +skillware/core/base_skill.py +skillware/core/env.py +skillware/core/loader.py \ No newline at end of file diff --git a/arpa_skillware.egg-info/dependency_links.txt b/arpa_skillware.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/arpa_skillware.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/arpa_skillware.egg-info/requires.txt b/arpa_skillware.egg-info/requires.txt new file mode 100644 index 0000000..7859f5f --- /dev/null +++ b/arpa_skillware.egg-info/requires.txt @@ -0,0 +1,11 @@ +requests +pyyaml +anthropic +google-generativeai +pymupdf + +[dev] +pytest +pytest-mock +flake8 +black diff --git a/arpa_skillware.egg-info/top_level.txt b/arpa_skillware.egg-info/top_level.txt new file mode 100644 index 0000000..9ca90c4 --- /dev/null +++ b/arpa_skillware.egg-info/top_level.txt @@ -0,0 +1,2 @@ +skills +skillware diff --git a/docs/PUBLISHING.md b/docs/PUBLISHING.md new file mode 100644 index 0000000..3aa6fa0 --- /dev/null +++ b/docs/PUBLISHING.md @@ -0,0 +1,47 @@ +# Publishing to PyPI + +This repository is configured to automatically publish releases to PyPI using GitHub Actions. + +## Prerequisites + +1. **PyPI Account**: You must have an account on [pypi.org](https://pypi.org/). +2. **Package Name**: The package name `skillware` must be available, or you must own it. + +## One-Time Setup + +To allow GitHub Actions to publish on your behalf, you need to configure **Trusted Publishing** (recommended) or use an API Token. + +### Option A: Trusted Publishing (Recommended) + +1. Go to [PyPI Publishing Management](https://pypi.org/manage/account/publishing/). +2. Fille in the details: + * **PyPI Project Name**: `skillware` (or create it first if it doesn't exist). + * **Owner**: Your PyPI username. + * **GitHub Repository Owner**: `ARPAHLS` (or your username). + * **GitHub Repository Name**: `skillware`. + * **Workflow Filename**: `publish.yml`. + * **Environment Name**: `pypi`. +3. Click **Add**. + +### Option B: API Token (Classic) + +1. Go to [PyPI Account Settings](https://pypi.org/manage/account/). +2. Scroll to **API Tokens** and click **Add API token**. +3. Name it `GitHub Actions` and set Scope to "Entire account" (for new projects) or specific project. +4. Copy the token (starts with `pypi-`). +5. Go to your GitHub Repository -> **Settings** -> **Secrets and variables** -> **Actions**. +6. Click **New repository secret**. +7. Name: `PYPI_PASSWORD`. +8. Value: Paste your token. +9. **Note**: You will need to edit `.github/workflows/publish.yml` to use `password: ${{ secrets.PYPI_PASSWORD }}` instead of `permissions: id-token: write`. + +## How to Publish a New Version + +1. **Update Version**: Bump the version number in `pyproject.toml` (e.g., `0.1.0` -> `0.1.1`). +2. **Commit & Push**: Push the change to `main`. +3. **Draft Release**: + * Go to GitHub -> **Releases** -> **Draft a new release**. + * Tag version: `v0.1.1` (matching `pyproject.toml`). + * Title: `v0.1.1`. + * Click **Publish release**. +4. **Watch Magic**: The `Publish to PyPI` workflow will run automatically and upload your package. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..b05a2ad --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,38 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "skillware" +version = "0.1.0" +description = "A framework for modular, self-contained AI skills." +readme = "README.md" +authors = [ + { name = "ARPA Hellenic Logic Systems", email = "skillware-os@arpacorp.net" }, +] +urls = { "Homepage" = "https://arpacorp.net", "Repository" = "https://github.com/arpahls/skillware" } +license = { file = "LICENSE" } +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +dependencies = [ + "requests", + "pyyaml", + "anthropic", + "google-generativeai", + "pymupdf", +] +requires-python = ">=3.10" + +[project.optional-dependencies] +dev = [ + "pytest", + "pytest-mock", + "flake8", + "black", +] + +[tool.setuptools.packages.find] +include = ["skillware*", "skills*"] diff --git a/skills/office/pdf_form_filler/manifest.yaml b/skills/office/pdf_form_filler/manifest.yaml index c693c34..9fc0a4b 100644 --- a/skills/office/pdf_form_filler/manifest.yaml +++ b/skills/office/pdf_form_filler/manifest.yaml @@ -9,7 +9,7 @@ parameters: description: Absolute path to the PDF form to fill. instructions: type: string - description: User instructions for filling the form (e.g. "Name: Alice, Age: 30"). + description: "User instructions for filling the form (e.g. 'Name: Alice, Age: 30')." output_path: type: string description: Optional path to save the filled PDF. From beb35402fee1e1edfedb7f5a3db774384086ffdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=84=E3=83=B3=E3=83=87=E3=83=AC?= Date: Sun, 15 Feb 2026 17:32:57 +0200 Subject: [PATCH 2/3] chore: Remove PUBLISHING.md per user request --- docs/PUBLISHING.md | 47 ---------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 docs/PUBLISHING.md diff --git a/docs/PUBLISHING.md b/docs/PUBLISHING.md deleted file mode 100644 index 3aa6fa0..0000000 --- a/docs/PUBLISHING.md +++ /dev/null @@ -1,47 +0,0 @@ -# Publishing to PyPI - -This repository is configured to automatically publish releases to PyPI using GitHub Actions. - -## Prerequisites - -1. **PyPI Account**: You must have an account on [pypi.org](https://pypi.org/). -2. **Package Name**: The package name `skillware` must be available, or you must own it. - -## One-Time Setup - -To allow GitHub Actions to publish on your behalf, you need to configure **Trusted Publishing** (recommended) or use an API Token. - -### Option A: Trusted Publishing (Recommended) - -1. Go to [PyPI Publishing Management](https://pypi.org/manage/account/publishing/). -2. Fille in the details: - * **PyPI Project Name**: `skillware` (or create it first if it doesn't exist). - * **Owner**: Your PyPI username. - * **GitHub Repository Owner**: `ARPAHLS` (or your username). - * **GitHub Repository Name**: `skillware`. - * **Workflow Filename**: `publish.yml`. - * **Environment Name**: `pypi`. -3. Click **Add**. - -### Option B: API Token (Classic) - -1. Go to [PyPI Account Settings](https://pypi.org/manage/account/). -2. Scroll to **API Tokens** and click **Add API token**. -3. Name it `GitHub Actions` and set Scope to "Entire account" (for new projects) or specific project. -4. Copy the token (starts with `pypi-`). -5. Go to your GitHub Repository -> **Settings** -> **Secrets and variables** -> **Actions**. -6. Click **New repository secret**. -7. Name: `PYPI_PASSWORD`. -8. Value: Paste your token. -9. **Note**: You will need to edit `.github/workflows/publish.yml` to use `password: ${{ secrets.PYPI_PASSWORD }}` instead of `permissions: id-token: write`. - -## How to Publish a New Version - -1. **Update Version**: Bump the version number in `pyproject.toml` (e.g., `0.1.0` -> `0.1.1`). -2. **Commit & Push**: Push the change to `main`. -3. **Draft Release**: - * Go to GitHub -> **Releases** -> **Draft a new release**. - * Tag version: `v0.1.1` (matching `pyproject.toml`). - * Title: `v0.1.1`. - * Click **Publish release**. -4. **Watch Magic**: The `Publish to PyPI` workflow will run automatically and upload your package. From 8f12dea1b6f6f5af588c18e1028892616a6f5d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=84=E3=83=B3=E3=83=87=E3=83=AC?= Date: Sun, 15 Feb 2026 17:36:32 +0200 Subject: [PATCH 3/3] chore: Cleanup build artifacts and update .gitignore --- .gitignore | 3 + arpa_skillware.egg-info/PKG-INFO | 218 ------------------- arpa_skillware.egg-info/SOURCES.txt | 19 -- arpa_skillware.egg-info/dependency_links.txt | 1 - arpa_skillware.egg-info/requires.txt | 11 - arpa_skillware.egg-info/top_level.txt | 2 - 6 files changed, 3 insertions(+), 251 deletions(-) delete mode 100644 arpa_skillware.egg-info/PKG-INFO delete mode 100644 arpa_skillware.egg-info/SOURCES.txt delete mode 100644 arpa_skillware.egg-info/dependency_links.txt delete mode 100644 arpa_skillware.egg-info/requires.txt delete mode 100644 arpa_skillware.egg-info/top_level.txt diff --git a/.gitignore b/.gitignore index 466ec90..a9c8120 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ __pycache__/ env/ venv/ .venv/ +build/ +dist/ +*.egg-info/ # IDEs .vscode/ diff --git a/arpa_skillware.egg-info/PKG-INFO b/arpa_skillware.egg-info/PKG-INFO deleted file mode 100644 index e0b367d..0000000 --- a/arpa_skillware.egg-info/PKG-INFO +++ /dev/null @@ -1,218 +0,0 @@ -Metadata-Version: 2.4 -Name: arpa-skillware -Version: 0.1.0 -Summary: A framework for modular, self-contained AI skills. -Author-email: ARPA Hellenic Logic Systems -License: MIT License - - Copyright (c) 2026 ARPA Hellenic Logical Systems - - 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. - -Project-URL: Homepage, https://arpacorp.net -Project-URL: Repository, https://github.com/arpahls/skillware -Classifier: Programming Language :: Python :: 3 -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Requires-Python: >=3.10 -Description-Content-Type: text/markdown -License-File: LICENSE -Requires-Dist: requests -Requires-Dist: pyyaml -Requires-Dist: anthropic -Requires-Dist: google-generativeai -Requires-Dist: pymupdf -Provides-Extra: dev -Requires-Dist: pytest; extra == "dev" -Requires-Dist: pytest-mock; extra == "dev" -Requires-Dist: flake8; extra == "dev" -Requires-Dist: black; extra == "dev" -Dynamic: license-file - -
- Skillware Logo - - A Python framework for modular, self-contained skill management for machines. -
- -
- -
- License - Python Version - PyPI Version -
- -
- - - ---- - -**Skillware** is an open-source framework and registry for modular, actionable Agent capabilities. It treats **Skills** as installable content, decoupling capability from intelligence. Just as `apt-get` installs software and `pip` installs libraries, `skillware` installs *know-how* for AI agents. - -> "I know Kung Fu." - Neo - -## Mission - -The AI ecosystem is fragmented. Developers often re-invent tool definitions, system prompts, and safety rules for every project. **Skillware** supplies a standard to package capabilities into self-contained units that work across **Gemini**, **Claude**, **GPT**, and **Llama**. - -A **Skill** in this framework provides everything an Agent needs to master a domain: - -1. **Logic**: Executable Python code. -2. **Cognition**: System instructions and "cognitive maps". -3. **Governance**: Constitution and safety boundaries. -4. **Interface**: Standardized schemas for LLM tool calling. - -## Repository Structure - -This repository is organized into a core framework, a registry of skills, and documentation. - -```text -Skillware/ -├── skillware/ # Core Framework Package -│ └── core/ -│ ├── base_skill.py # Abstract Base Class for skills -│ ├── loader.py # Universal Skill Loader & Model Adapter -│ └── env.py # Environment Management -├── skills/ # Skill Registry (Domain-driven) -│ └── finance/ -│ └── wallet_screening/ -│ ├── skill.py # Logic -│ ├── manifest.yaml # Metadata & Constitution -│ ├── instructions.md # Cognitive Map -│ ├── card.json # UI Presentation -│ ├── data/ # Integrated Knowledge Base -│ └── maintenance/ # Maintenance Tools -│ └── office/ -│ └── pdf_form_filler/ -│ ├── skill.py # Logic -│ ├── manifest.yaml # Metadata -│ ├── instructions.md # Cognitive Map -│ ├── utils.py # PDF Processing -│ └── card.json # UI Presentation -├── templates/ # New Skill Templates -│ └── python_skill/ # Standard Python Skill Template -├── examples/ # Reference Implementations -│ ├── gemini_wallet_check.py # Google Gemini Integration -│ ├── claude_wallet_check.py # Anthropic Claude Integration -│ ├── gemini_pdf_form_filler.py -│ └── claude_pdf_form_filler.py -├── docs/ # Comprehensive Documentation -│ ├── introduction.md # Philosophy & Design -│ ├── usage/ # Integration Guides -│ └── skills/ # Skill Reference Cards -└── COMPARISON.md # Comparison vs. Anthropic Skills / MCP -``` - -## Quick Start - -### 1. Installation - -Clone the repository and install the dependencies. - -```bash -git clone https://github.com/arpa/skillware.git -cd skillware -pip install -r requirements.txt -``` - -> **Note**: Individual skills may have their own dependencies. The `SkillLoader` validates `manifest.yaml` and warns of missing packages (e.g., `requests`, `pandas`) upon loading a skill. - -### 2. Configuration - -Create a `.env` file with your API keys (e.g., Google Gemini API Key): - -```ini -GOOGLE_API_KEY="your_key" -``` - -### 3. Usage Example (Gemini) - -```python -import google.generativeai as genai -from skillware.core.loader import SkillLoader -from skillware.core.env import load_env_file - -# Load Environment -load_env_file() - -# 1. Load the Skill -# The loader reads the code, manifest, and instructions automatically -skill_bundle = SkillLoader.load_skill("finance/wallet_screening") - -# 2. Model & Chat Setup -model = genai.GenerativeModel( - 'gemini-2.5-flash', - tools=[SkillLoader.to_gemini_tool(skill_bundle)], # The "Adapter" - system_instruction=skill_bundle['instructions'] # The "Mind" -) -chat = model.start_chat(enable_automatic_function_calling=True) - -# 3. Agent Loop -# The SDK handles the loop: model -> tool call -> execution -> result -> model reply. -response = chat.send_message("Screen wallet 0xd8dA... for risks.") -print(response.text) -``` - -## Documentation - -* **[Core Logic & Philosophy](docs/introduction.md)**: Details on how Skillware decouples Logic, Cognition, and Governance. -* **[Usage Guide: Gemini](docs/usage/gemini.md)**: Integration with Google's GenAI SDK. -* **[Usage Guide: Claude](docs/usage/claude.md)**: Integration with Anthropic's SDK. -* **[Skill Library](docs/skills/README.md)**: Available capabilities. - -## Contributing - -We are building the "App Store" for Agents and require professional, robust, and safe skills. - -Please read **[CONTRIBUTING.md](CONTRIBUTING.md)** for guidelines on folder structure, manifest schemas, and safety constitutions. - -## Comparison - -Skillware differs from the Model Context Protocol (MCP) or Anthropic's Skills repository in the following ways: - -* **Model Agnostic**: Native adapters for Gemini, Claude, and OpenAI. -* **Code-First**: Skills are executable Python packages, not just server specs. -* **Runtime-Focused**: Provides tools for the application, not just recipes for an IDE. - -[Read the full comparison here](COMPARISON.md). - -## Contact - -For questions, suggestions, or contributions, please open an issue or reach out to us: - -* **Email**: [skillware-os@arpacorp.net](mailto:skillware-os@arpacorp.net) -* **Issues**: [GitHub Issues](https://github.com/arpahls/skillware/issues) - ---- - -
- ARPA Logo -
- Built & Maintained by ARPA Hellenic Logical Systems & the Community -
diff --git a/arpa_skillware.egg-info/SOURCES.txt b/arpa_skillware.egg-info/SOURCES.txt deleted file mode 100644 index 45b5bf1..0000000 --- a/arpa_skillware.egg-info/SOURCES.txt +++ /dev/null @@ -1,19 +0,0 @@ -LICENSE -README.md -pyproject.toml -arpa_skillware.egg-info/PKG-INFO -arpa_skillware.egg-info/SOURCES.txt -arpa_skillware.egg-info/dependency_links.txt -arpa_skillware.egg-info/requires.txt -arpa_skillware.egg-info/top_level.txt -skills/finance/wallet_screening/__init__.py -skills/finance/wallet_screening/skill.py -skills/finance/wallet_screening/maintenance/normalization_tool.py -skills/finance/wallet_screening/maintenance/normalize_uniswap_trm.py -skills/office/pdf_form_filler/skill.py -skills/office/pdf_form_filler/utils.py -skillware/__init__.py -skillware/core/__init__.py -skillware/core/base_skill.py -skillware/core/env.py -skillware/core/loader.py \ No newline at end of file diff --git a/arpa_skillware.egg-info/dependency_links.txt b/arpa_skillware.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/arpa_skillware.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/arpa_skillware.egg-info/requires.txt b/arpa_skillware.egg-info/requires.txt deleted file mode 100644 index 7859f5f..0000000 --- a/arpa_skillware.egg-info/requires.txt +++ /dev/null @@ -1,11 +0,0 @@ -requests -pyyaml -anthropic -google-generativeai -pymupdf - -[dev] -pytest -pytest-mock -flake8 -black diff --git a/arpa_skillware.egg-info/top_level.txt b/arpa_skillware.egg-info/top_level.txt deleted file mode 100644 index 9ca90c4..0000000 --- a/arpa_skillware.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -skills -skillware