Skip to content

Commit 2a9c2ab

Browse files
authored
chore: modernize project files and add skill development guide (#114)
- .gitignore: modernize with Python, ML models, Docker, IDE sections - CONTRIBUTING.md: add skill-focused contributing guide - CODE_OF_CONDUCT.md: update to Contributor Covenant 2.1 - Contributions.md: refresh third-party acknowledgments for 2026 - FUNDING.yml: move to .github/ (GitHub convention) - docs/skill-development.md: add comprehensive skill development guide covering SKILL.md format, parameter types, JSON-lines protocol, and skill categories
1 parent 6b99825 commit 2a9c2ab

6 files changed

Lines changed: 263 additions & 77 deletions

File tree

File renamed without changes.

.gitignore

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,52 @@
1-
model
1+
# ─── Python ───────────────────────────────────────────
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
*.egg-info/
7+
*.egg
8+
dist/
9+
.eggs/
10+
.venv/
11+
venv/
12+
env/
13+
14+
# ─── ML Models & Data ────────────────────────────────
15+
*.pt
16+
*.pth
17+
*.onnx
18+
*.tflite
19+
*.pb
20+
*.h5
21+
*.safetensors
22+
model/
223
model.tgz
3-
*.pyc
4-
runtime
24+
*.tgz
25+
weights/
26+
runs/
27+
28+
# ─── Build ────────────────────────────────────────────
529
build/build/*
630
build/dist/*
731
build/runtime_arch
832
build/*
9-
*node_modules/*
10-
test/node_modules/*
11-
*.tgz
12-
.DS_Store
33+
runtime
34+
35+
# ─── Node ─────────────────────────────────────────────
36+
node_modules/
37+
38+
# ─── Docker ───────────────────────────────────────────
1339
docker/db
1440
volumes
41+
42+
# ─── IDE & OS ─────────────────────────────────────────
43+
.DS_Store
44+
.vscode/
45+
.idea/
46+
*.swp
47+
*.swo
48+
*~
49+
.env.local
50+
51+
# ─── Project Specific ────────────────────────────────
1552
src/yolov7_reid/src/models/mgn_R50-ibn.onnx

CODE_OF_CONDUCT.md

Lines changed: 29 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,48 @@
22

33
## Our Pledge
44

5-
In the interest of fostering an open and welcoming environment, we as
6-
contributors and maintainers pledge to making participation in our project and
7-
our community a harassment-free experience for everyone, regardless of age, body
8-
size, disability, ethnicity, sex characteristics, gender identity and expression,
9-
level of experience, education, socio-economic status, nationality, personal
10-
appearance, race, religion, or sexual identity and orientation.
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
1114

1215
## Our Standards
1316

14-
Examples of behavior that contributes to creating a positive environment
15-
include:
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
1619

17-
* Using welcoming and inclusive language
18-
* Being respectful of differing viewpoints and experiences
19-
* Gracefully accepting constructive criticism
20-
* Focusing on what is best for the community
21-
* Showing empathy towards other community members
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the overall
26+
community
2227

23-
Examples of unacceptable behavior by participants include:
28+
Examples of unacceptable behavior include:
2429

25-
* The use of sexualized language or imagery and unwelcome sexual attention or
26-
advances
27-
* Trolling, insulting/derogatory comments, and personal or political attacks
30+
* The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
2833
* Public or private harassment
2934
* Publishing others' private information, such as a physical or electronic
30-
address, without explicit permission
35+
address, without their explicit permission
3136
* Other conduct which could reasonably be considered inappropriate in a
32-
professional setting
33-
34-
## Our Responsibilities
35-
36-
Project maintainers are responsible for clarifying the standards of acceptable
37-
behavior and are expected to take appropriate and fair corrective action in
38-
response to any instances of unacceptable behavior.
39-
40-
Project maintainers have the right and responsibility to remove, edit, or
41-
reject comments, commits, code, wiki edits, issues, and other contributions
42-
that are not aligned to this Code of Conduct, or to ban temporarily or
43-
permanently any contributor for other behaviors that they deem inappropriate,
44-
threatening, offensive, or harmful.
45-
46-
## Scope
47-
48-
This Code of Conduct applies both within project spaces and in public spaces
49-
when an individual is representing the project or its community. Examples of
50-
representing a project or community include using an official project e-mail
51-
address, posting via an official social media account, or acting as an appointed
52-
representative at an online or offline event. Representation of a project may be
53-
further defined and clarified by project maintainers.
37+
professional setting
5438

5539
## Enforcement
5640

5741
Instances of abusive, harassing, or otherwise unacceptable behavior may be
58-
reported by contacting the project team at . All
59-
complaints will be reviewed and investigated and will result in a response that
60-
is deemed necessary and appropriate to the circumstances. The project team is
61-
obligated to maintain confidentiality with regard to the reporter of an incident.
62-
Further details of specific enforcement policies may be posted separately.
63-
64-
Project maintainers who do not follow or enforce the Code of Conduct in good
65-
faith may face temporary or permanent repercussions as determined by other
66-
members of the project's leadership.
42+
reported to the project maintainers. All complaints will be reviewed and
43+
investigated promptly and fairly.
6744

6845
## Attribution
6946

70-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71-
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72-
73-
[homepage]: https://www.contributor-covenant.org
74-
75-
For answers to common questions about this code of conduct, see
76-
https://www.contributor-covenant.org/faq
47+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
48+
version 2.1, available at
49+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html

CONTRIBUTING.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Contributing to DeepCamera
2+
3+
Thank you for your interest in contributing to DeepCamera! This project is evolving into an open-source AI skill platform for [SharpAI Aegis](https://sharpai.org).
4+
5+
## How to Contribute
6+
7+
### 🛠️ Build a New Skill
8+
9+
The best way to contribute is by building a new skill. Each skill is a self-contained folder under `skills/` with:
10+
11+
1. **`SKILL.md`** — declares parameters (rendered as UI in Aegis) and capabilities
12+
2. **`requirements.txt`** — Python dependencies
13+
3. **`scripts/`** — entry point using JSON-lines stdin/stdout protocol
14+
15+
See [`skills/detection/yolo-detection-2026/`](skills/detection/yolo-detection-2026/) for a complete reference implementation.
16+
17+
### 📋 Skill Ideas We Need
18+
19+
- Camera providers: Eufy, Reolink, Tapo, Ring
20+
- Messaging channels: Matrix, LINE, Signal
21+
- Automation triggers: MQTT, webhooks
22+
- AI models: VLM scene analysis, SAM2 segmentation, depth estimation
23+
24+
### 🐛 Report Issues
25+
26+
- Use [GitHub Issues](https://github.com/SharpAI/DeepCamera/issues)
27+
- Include your platform, Python version, and steps to reproduce
28+
29+
### 📝 Improve Documentation
30+
31+
- Fix typos, improve clarity, add examples
32+
- Add platform-specific setup guides under `docs/`
33+
34+
## Development Setup
35+
36+
```bash
37+
git clone https://github.com/SharpAI/DeepCamera.git
38+
cd DeepCamera
39+
40+
# Work on a skill
41+
cd skills/detection/yolo-detection-2026
42+
python3 -m venv .venv && source .venv/bin/activate
43+
pip install -r requirements.txt
44+
```
45+
46+
## Code Style
47+
48+
- Python: follow PEP 8
49+
- Use type hints where practical
50+
- Add docstrings to public functions
51+
52+
## License
53+
54+
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).

Contributions.md

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
1-
# Contributions
2-
This project contains source code or library dependencies from the follow projects:
3-
* Tensorflow available at: https://github.com/tensorflow/tensorflow Apache License 2.0
4-
* MXNet available at: https://github.com/apache/incubator-mxnet Apache License 2.0
5-
* TVM available at: https://github.com/dmlc/tvm Apache License 2.0
6-
* Shinobi project available at: https://gitlab.com/Shinobi-Systems/Shinobi/ Copyright (c) 2018 Shinobi Systems
7-
* Termux project available at: https://github.com/termux/termux-app GPLv3/Apache License 2.0
8-
* Insightface project available at: https://github.com/deepinsight/insightface MIT License
9-
* Easyrs project available at: https://github.com/silvaren/easyrs MIT License
10-
* Nodejs: https://nodejs.org Copyright Node.js contributors. All rights reserved.
11-
* Python: https://www.python.org Python 2.7 license
12-
* Gcc for termux with fortran scipy etc: https://github.com/its-pointless/gcc_termux
13-
* RembrandtAndroid project available at https://github.com/imgly/RembrandtAndroid
14-
* Great English-writing introduction on [analyticsvidhya](https://www.analyticsvidhya.com/blog/2019/04/top-5-machine-learning-github-reddit/)
1+
# Third-Party Licenses & Acknowledgments
2+
3+
This project uses or was inspired by the following open-source projects:
4+
5+
## AI & ML Frameworks
6+
* [Ultralytics](https://github.com/ultralytics/ultralytics) — YOLOv8/v10/v11 (AGPL-3.0)
7+
* [Insightface](https://github.com/deepinsight/insightface) — Face recognition (MIT)
8+
* [FastReID](https://github.com/JDAI-CV/fast-reid) — Person re-identification (Apache-2.0)
9+
10+
## Legacy Dependencies (src/)
11+
* [TensorFlow](https://github.com/tensorflow/tensorflow) — Apache License 2.0
12+
* [MXNet](https://github.com/apache/incubator-mxnet) — Apache License 2.0
13+
* [TVM](https://github.com/dmlc/tvm) — Apache License 2.0
14+
15+
## Infrastructure
16+
* [Milvus](https://github.com/milvus-io/milvus) — Vector database (Apache-2.0)
17+
* [go2rtc](https://github.com/AlexxIT/go2rtc) — RTSP/WebRTC streaming (MIT)
18+
* [Node.js](https://nodejs.org) — MIT
19+
* [Python](https://www.python.org) — PSF License
20+
21+
## Historical
22+
* Shinobi — https://gitlab.com/Shinobi-Systems/Shinobi/
23+
* Termux — https://github.com/termux/termux-app (GPLv3)

docs/skill-development.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# Skill Development Guide
2+
3+
This guide explains how to create a new skill for the DeepCamera skill catalog.
4+
5+
## What is a Skill?
6+
7+
A skill is a self-contained folder that provides an AI capability to [SharpAI Aegis](https://sharpai.org). Skills communicate with Aegis via **JSON lines** over stdin/stdout.
8+
9+
## Skill Structure
10+
11+
```
12+
skills/<category>/<skill-name>/
13+
├── SKILL.md # Manifest + setup instructions
14+
├── requirements.txt # Python dependencies
15+
├── scripts/
16+
│ └── main.py # Entry point
17+
├── assets/
18+
│ └── icon.png # 64×64 icon (optional)
19+
└── tests/
20+
└── test_main.py # Tests (optional)
21+
```
22+
23+
## SKILL.md Format
24+
25+
The `SKILL.md` file has two parts:
26+
1. **YAML frontmatter** — machine-readable parameters and capabilities
27+
2. **Markdown body** — human/LLM-readable setup instructions
28+
29+
```yaml
30+
---
31+
name: my-skill
32+
description: "What this skill does"
33+
version: 1.0.0
34+
35+
parameters:
36+
- name: model
37+
label: "Model"
38+
type: select
39+
options: ["option1", "option2"]
40+
default: "option1"
41+
group: Model
42+
43+
capabilities:
44+
my_capability:
45+
script: scripts/main.py
46+
description: "What this capability does"
47+
---
48+
49+
# My Skill
50+
51+
Description of the skill.
52+
53+
## Setup
54+
55+
Step-by-step setup instructions that SharpAI Aegis's
56+
LLM agent can read and execute.
57+
```
58+
59+
## Parameter Types
60+
61+
| Type | Renders As | Example |
62+
|------|-----------|---------|
63+
| `string` | Text input | Email, URL, API key |
64+
| `password` | Masked input | Passwords, tokens |
65+
| `number` | Number input with min/max | Confidence threshold |
66+
| `boolean` | Toggle switch | Enable/disable feature |
67+
| `select` | Dropdown | Model selection |
68+
| `url` | URL input with validation | Server address |
69+
| `camera_select` | Camera picker | Target cameras |
70+
71+
## JSON Lines Protocol
72+
73+
Scripts communicate with Aegis via stdin/stdout. Each line is a JSON object.
74+
75+
### Script → Aegis (stdout)
76+
77+
```jsonl
78+
{"event": "ready", "model": "...", "device": "..."}
79+
{"event": "detections", "camera_id": "...", "objects": [...]}
80+
{"event": "error", "message": "...", "retriable": true}
81+
```
82+
83+
### Aegis → Script (stdin)
84+
85+
```jsonl
86+
{"event": "frame", "camera_id": "...", "frame_path": "...", "timestamp": "..."}
87+
{"command": "stop"}
88+
```
89+
90+
## Categories
91+
92+
| Category | Directory | Use For |
93+
|----------|-----------|---------|
94+
| `detection` | `skills/detection/` | Object detection, person recognition |
95+
| `analysis` | `skills/analysis/` | VLM scene understanding, offline analysis |
96+
| `transformation` | `skills/transformation/` | Depth estimation, style transfer |
97+
| `annotation` | `skills/annotation/` | Dataset labeling, COCO export |
98+
| `camera-providers` | `skills/camera-providers/` | Blink, Eufy, Ring, Reolink, Tapo |
99+
| `streaming` | `skills/streaming/` | RTSP/WebRTC via go2rtc |
100+
| `channels` | `skills/channels/` | Messaging: Matrix, LINE, Signal |
101+
| `automation` | `skills/automation/` | MQTT, webhooks, HA triggers |
102+
| `integrations` | `skills/integrations/` | Home Assistant bridge |
103+
104+
## Testing Locally
105+
106+
```bash
107+
# Test your skill without Aegis by piping JSON:
108+
echo '{"event": "frame", "camera_id": "test", "frame_path": "/tmp/test.jpg"}' | python scripts/main.py
109+
```
110+
111+
## Reference
112+
113+
See [`skills/detection/yolo-detection-2026/`](../skills/detection/yolo-detection-2026/) for a complete working example.

0 commit comments

Comments
 (0)