Skip to content
Open
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
135 changes: 67 additions & 68 deletions profile/README.md
Original file line number Diff line number Diff line change
@@ -1,95 +1,94 @@
# Conduit

**GitHub automation that actually works.**
> **GitHub API connectors that work exactly as documented. No surprises. No exceptions.**

Composable PHP packages built for AI agents. Each package is a single verb: `issue`, `pr`, `commit`, `repo`, `action`. Chain them together to build autonomous GitHub workflows that don't break.
[![Sentinel Certified](https://img.shields.io/badge/Sentinel-Certified-brightgreen?style=flat-square)](https://github.com/synapse-sentinel/gate)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

Synapse Sentinel GitHub project synapse-sentinel/gate

💡 Result:

I couldn't find a public GitHub repository named synapse-sentinel/gate. Could you (1) paste the repository URL or (2) confirm the exact owner/name (maybe synapse-sentinel/gate is private or has a different spelling)?


Remove or replace the Sentinel Certified badge—the referenced project does not exist.

The badge on line 5 links to github.com/synapse-sentinel/gate, but this repository does not exist publicly. Either remove the badge, replace it with a valid certification/badge system, or create and maintain the referenced project before adding this badge.

🤖 Prompt for AI Agents
In profile/README.md around line 5 the "Sentinel Certified" badge links to
github.com/synapse-sentinel/gate which does not exist; remove the badge or
replace it with a valid badge URL (or point to an existing maintained
repository/project) and update any accompanying alt/title text accordingly so
the README only references verifiable badges or certification links.


## The Ecosystem
## The Standard

| Package | What It Does | Install |
|---------|--------------|---------|
| [connector](https://github.com/conduit-ui/connector) | HTTP foundation layer (Saloon) | `composer require conduit-ui/connector` |
| [issue](https://github.com/conduit-ui/issue) | Create, update, close issues | `composer require conduit-ui/issue` |
| [pr](https://github.com/conduit-ui/pr) | Manage pull requests | `composer require conduit-ui/pr` |
| [commit](https://github.com/conduit-ui/commit) | Work with commit history | `composer require conduit-ui/commit` |
| [repo](https://github.com/conduit-ui/repo) | Repository governance | `composer require conduit-ui/repo` |
| [action](https://github.com/conduit-ui/action) | Trigger GitHub Actions | `composer require conduit-ui/action` |
| [review](https://github.com/conduit-ui/review) | Code review automation | `composer require conduit-ui/review` |
| [know](https://github.com/conduit-ui/know) | Agent domain knowledge | `composer require conduit-ui/know` |
Every certified Conduit package:
- **Works as documented** - No hidden behaviors or edge cases
- **100% test coverage** - Every line proven correct
- **Fails fast** - Typed exceptions, not silent errors
- **Auto-verified** - PRs merge only when Sentinel certifies

## Quick Start
Packages without the Sentinel badge are in active development.

```php
use ConduitUi\GitHubConnector\Connector;
use ConduitUi\Issue\IssueResource;

// Connect
$connector = new Connector(token: 'ghp_...');

// Create issue
$issue = new IssueResource($connector);
$issue->create('owner/repo', [
'title' => 'Bug found by agent',
'body' => 'Details...',
'labels' => ['bug', 'agent-created']
]);
## Ecosystem

| Package | Purpose | Status |
|---------|---------|--------|
| [connector](https://github.com/conduit-ui/connector) | HTTP transport, typed exceptions | [![Sentinel](https://img.shields.io/github/actions/workflow/status/conduit-ui/connector/gate.yml?label=Sentinel&style=flat-square)](https://github.com/conduit-ui/connector/actions/workflows/gate.yml) |
| [issue](https://github.com/conduit-ui/issue) | Issue CRUD, labels, milestones | [![Sentinel](https://img.shields.io/github/actions/workflow/status/conduit-ui/issue/gate.yml?label=Sentinel&style=flat-square)](https://github.com/conduit-ui/issue/actions/workflows/gate.yml) |
| [pr](https://github.com/conduit-ui/pr) | PR review, merge, query | [![Sentinel](https://img.shields.io/github/actions/workflow/status/conduit-ui/pr/gate.yml?label=Sentinel&style=flat-square)](https://github.com/conduit-ui/pr/actions/workflows/gate.yml) |
| [repo](https://github.com/conduit-ui/repo) | Repository management | ![Building](https://img.shields.io/badge/status-building-yellow?style=flat-square) |
| [commit](https://github.com/conduit-ui/commit) | Commit operations | ![Planned](https://img.shields.io/badge/status-planned-lightgrey?style=flat-square) |
| [action](https://github.com/conduit-ui/action) | GitHub Actions integration | ![Planned](https://img.shields.io/badge/status-planned-lightgrey?style=flat-square) |

## Quality Gates

Every package passes **Synapse Sentinel** certification:

```
✓ Tests & Coverage (100% threshold)
✓ Security Audit (no vulnerabilities)
✓ Pest Syntax (describe/it blocks)
✓ Static Analysis (PHPStan level 8)
```
Comment on lines +32 to 37
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add language identifiers to fenced blocks (MD040) to satisfy markdownlint and improve rendering
Suggested change: use text for the checklist and architecture diagram.

-```
+```text
 ✓ Tests & Coverage (100% threshold)
 ✓ Security Audit (no vulnerabilities)
 ✓ Pest Syntax (describe/it blocks)
 ✓ Static Analysis (PHPStan level 8)

@@
- +text
┌─────────────────────────────────────────────────────┐
│ Your Application │
├─────────────────────────────────────────────────────┤
│ issue │ pr │ repo │ action │ commit │
├─────────────────────────────────────────────────────┤
│ connector │
├─────────────────────────────────────────────────────┤
│ Saloon HTTP Client │
└─────────────────────────────────────────────────────┘

Also applies to: 62-72

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

32-32: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In profile/README.md around lines 32-37 (and similarly lines 62-72), the fenced
code blocks lack language identifiers which triggers MD040; add "text" after the
opening triple backticks for those checklist and ASCII diagram blocks so they
become ```text, updating both occurrences to ensure markdownlint passes and
rendering improves.


Each package is:
- **Minimal** - One responsibility
- **Composable** - Mix and match
- **Type-safe** - Full PHP 8.2+ typing
- **Tested** - Pest coverage
PRs auto-merge when certification passes. No exceptions.

## Built for Agents
## Quick Start

Human developers use GitHub's UI. AI agents need programmatic interfaces.
```bash
composer require conduit-ui/connector conduit-ui/issue
```

Conduit gives agents structured, deterministic access to GitHub. Same input, same output. No surprises.
```php
use ConduitUI\Connector\Connector;
use ConduitUI\Issue\IssuesService;

Perfect for:
- Autonomous issue triaging
- Automated PR workflows
- Repository governance bots
- GitHub Actions orchestration
- Code review automation
$connector = new Connector(env('GITHUB_TOKEN'));
$issues = new IssuesService($connector);

// Every method works exactly as documented
$issue = $issues->get('owner', 'repo', 123);
$issues->addLabels('owner', 'repo', 123, ['bug', 'priority-high']);
$issues->close('owner', 'repo', 123);
```

## Architecture

```
┌─────────────┐
│ Your Agent │
└──────┬──────┘
┌─────────────────────────────────────┐
│ Conduit Packages (issue/pr/etc) │
└──────────────┬──────────────────────┘
┌──────────────┐
│ Connector │ ← Saloon HTTP
└──────┬───────┘
┌──────────────┐
│ GitHub API │
└──────────────┘
┌─────────────────────────────────────────────────────┐
│ Your Application │
├─────────────────────────────────────────────────────┤
│ issue │ pr │ repo │ action │ commit │
├─────────────────────────────────────────────────────┤
│ connector │
├─────────────────────────────────────────────────────┤
│ Saloon HTTP Client │
└─────────────────────────────────────────────────────┘
```

## Philosophy
## Requirements

- PHP 8.2+
- GitHub personal access token

## Contributing

- **Singular**: One word, one purpose
- **Deterministic**: Predictable behavior
- **Agent-first**: Built for automation
- **No magic**: Explicit over implicit
1. Fork the relevant package
2. Write tests first (100% coverage required)
3. Implement your changes
4. PR auto-merges when Sentinel certifies

## Support

Open issues on package repos. PRs welcome.

For enterprise support or custom packages: jordan@partridge.rocks
Enterprise support: jordan@partridge.rocks
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Avoid bare email (MD034): make it a link

-Enterprise support: jordan@partridge.rocks
+Enterprise support: <mailto:jordan@partridge.rocks>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Enterprise support: jordan@partridge.rocks
Enterprise support: <mailto:jordan@partridge.rocks>
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

90-90: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In profile/README.md around line 90 the enterprise support email is written as a
bare address which triggers Markdown lint rule MD034; replace the plain email
with a proper mailto link (e.g., <email-address> wrapped as
[email](mailto:email)) so the address is clickable and conforms to the linter,
ensuring any surrounding punctuation/spacing remains correct.


---
## License

*Part of [THE SHIT](https://github.com/the-shit) - Developer tools that don't suck.*
MIT