PHPackages                             conduit-ui/repo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. conduit-ui/repo

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

conduit-ui/repo
===============

Repository management for agents

v0.3.0(6mo ago)024[4 issues](https://github.com/conduit-ui/repo/issues)[2 PRs](https://github.com/conduit-ui/repo/pulls)MITPHPPHP ^8.2|^8.3|^8.4CI passing

Since Dec 19Pushed 6mo agoCompare

[ Source](https://github.com/conduit-ui/repo)[ Packagist](https://packagist.org/packages/conduit-ui/repo)[ RSS](/packages/conduit-ui-repo/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (12)Versions (9)Used By (0)

Repository Governance at Scale
==============================

[](#repository-governance-at-scale)

Stop manually auditing repository settings. Start enforcing compliance policies across your entire organization.

Audit, update, and manage repositories in bulk. Enforce branch protection, security policies, and team permissions across hundreds of repos with clean PHP code.

[![Latest Version](https://camo.githubusercontent.com/1c6a4491b126d062d12bb60bfaa234dd18fef526f37a50a1be97c3456daf50d1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636f6e647569742d75692f7265706f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/conduit-ui/repo)[![MIT License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Total Downloads](https://camo.githubusercontent.com/32ec46daf171f98ab228526d33a88fc1a7b6a96a95ec002236f62f04ec73c511/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f636f6e647569742d75692f7265706f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/conduit-ui/repo)

Installation
------------

[](#installation)

```
composer require conduit-ui/repo
```

Why This Exists
---------------

[](#why-this-exists)

Your organization has 200+ repositories. Some have branch protection disabled. Others allow force pushes to main. Security policies are inconsistent. This package gives you the tools to audit and enforce compliance at scale.

Quick Start
-----------

[](#quick-start)

```
use ConduitUI\Repo\Repository;

// Find a single repository
$repo = Repository::find('owner/repo');

// Audit all org repositories
Repository::forOrganization('your-org')
    ->get()
    ->filter(fn($repo) => !$repo->branchProtectionEnabled())
    ->each(fn($repo) => $repo->enableBranchProtection('main'));

// Create a new repository
Repository::create('new-repo', [
    'description' => 'API service for user management',
    'private' => true,
    'auto_init' => true,
]);
```

Core Features
-------------

[](#core-features)

### Repository Discovery

[](#repository-discovery)

**Find by Name**

```
$repo = Repository::find('owner/repo');
```

**List User Repositories**

```
$repos = Repository::forUser('username')->get();
```

**List Organization Repositories**

```
$repos = Repository::forOrganization('org-name')->get();
```

**List Authenticated User's Repos**

```
$repos = Repository::forAuthenticatedUser()->get();
```

### Repository Creation

[](#repository-creation)

**Basic Creation**

```
Repository::create('my-new-repo', [
    'description' => 'A new project',
    'private' => false,
]);
```

**Organization Repository**

```
Repository::createForOrganization('org-name', 'repo-name', [
    'description' => 'Team project',
    'private' => true,
    'auto_init' => true,
    'gitignore_template' => 'PHP',
    'license_template' => 'mit',
]);
```

### Repository Updates

[](#repository-updates)

**Update Metadata**

```
$repo = Repository::find('owner/repo');
$repo->update([
    'description' => 'Updated description',
    'homepage' => 'https://example.com',
    'private' => true,
    'has_issues' => true,
    'has_wiki' => false,
]);
```

### Repository Details

[](#repository-details)

**Branches**

```
$branches = $repo->branches();
$main = $repo->defaultBranch();
```

**Releases**

```
$releases = $repo->releases();
$latest = $repo->latestRelease();
```

**Collaborators**

```
$collaborators = $repo->collaborators();
```

**Topics (Tags)**

```
$topics = $repo->topics();
```

**Languages**

```
$languages = $repo->languages();
// ['PHP' => 75234, 'JavaScript' => 12456, ...]
```

### Repository Deletion

[](#repository-deletion)

```
Repository::find('owner/repo')->delete();
```

Governance &amp; Compliance
---------------------------

[](#governance--compliance)

### Audit Branch Protection

[](#audit-branch-protection)

```
// Find repos without branch protection
Repository::forOrganization('your-org')
    ->get()
    ->filter(fn($repo) => !$repo->branchProtectionEnabled())
    ->each(function($repo) {
        echo "{$repo->name} is not protected!\n";
    });
```

### Enforce Security Policies

[](#enforce-security-policies)

```
// Disable force pushes across all repos
Repository::forOrganization('your-org')
    ->get()
    ->each(fn($repo) => $repo->update([
        'allow_force_pushes' => false,
        'delete_branch_on_merge' => true,
    ]));
```

### Standardize Repository Settings

[](#standardize-repository-settings)

```
// Enforce consistent settings across org
$standardSettings = [
    'has_issues' => true,
    'has_wiki' => false,
    'has_projects' => false,
    'allow_squash_merge' => true,
    'allow_merge_commit' => false,
    'allow_rebase_merge' => false,
    'delete_branch_on_merge' => true,
];

Repository::forOrganization('your-org')
    ->get()
    ->each(fn($repo) => $repo->update($standardSettings));
```

### Archive Stale Repositories

[](#archive-stale-repositories)

```
// Archive repos with no commits in 12 months
Repository::forOrganization('your-org')
    ->get()
    ->filter(fn($repo) => $repo->pushedAt < now()->subYear())
    ->each(fn($repo) => $repo->update(['archived' => true]));
```

Bulk Operations
---------------

[](#bulk-operations)

### Clone All Org Repositories

[](#clone-all-org-repositories)

```
Repository::forOrganization('your-org')
    ->get()
    ->each(function($repo) {
        $cloneUrl = $repo->cloneUrl;
        exec("git clone {$cloneUrl}");
    });
```

### Generate Org Report

[](#generate-org-report)

```
$report = Repository::forOrganization('your-org')
    ->get()
    ->map(fn($repo) => [
        'name' => $repo->name,
        'private' => $repo->private,
        'branch_protection' => $repo->branchProtectionEnabled(),
        'last_push' => $repo->pushedAt->diffForHumans(),
        'open_issues' => $repo->openIssuesCount,
        'language' => $repo->language,
    ]);

// Export to CSV, send to Slack, etc.
```

### Bulk Topic Management

[](#bulk-topic-management)

```
// Tag all PHP repos
Repository::forOrganization('your-org')
    ->get()
    ->filter(fn($repo) => $repo->language === 'PHP')
    ->each(fn($repo) => $repo->addTopics(['php', 'backend']));
```

Data Objects
------------

[](#data-objects)

All responses return strongly-typed DTOs:

```
$repo->id;                    // int
$repo->name;                  // string
$repo->fullName;              // string (owner/repo)
$repo->description;           // ?string
$repo->private;               // bool
$repo->fork;                  // bool
$repo->archived;              // bool
$repo->disabled;              // bool
$repo->owner;                 // Owner object
$repo->license;               // ?License object
$repo->language;              // ?string
$repo->defaultBranch;         // string
$repo->openIssuesCount;       // int
$repo->stargazersCount;       // int
$repo->watchersCount;         // int
$repo->forksCount;            // int
$repo->createdAt;             // Carbon instance
$repo->updatedAt;             // Carbon instance
$repo->pushedAt;              // Carbon instance
$repo->cloneUrl;              // string
$repo->sshUrl;                // string
$repo->branchProtectionEnabled(); // bool
```

Usage Patterns
--------------

[](#usage-patterns)

### Static API (Recommended)

[](#static-api-recommended)

```
use ConduitUI\Repo\Repository;

$repo = Repository::find('owner/repo');
$repos = Repository::forOrganization('org')->get();
```

### Instance API

[](#instance-api)

```
use ConduitUI\Repo\RepositoryManager;

$manager = new RepositoryManager();
$repo = $manager->find('owner/repo');
```

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag="repo-config"
```

Set your GitHub token in `.env`:

```
GITHUB_TOKEN=your-github-token
```

For organization-level operations, ensure your token has `repo` and `admin:org` scopes.

Requirements
------------

[](#requirements)

- PHP 8.2+
- GitHub personal access token or GitHub App
- For org operations: `admin:org` scope

Testing
-------

[](#testing)

```
composer test
```

Code Quality
------------

[](#code-quality)

```
composer format  # Fix code style
composer analyse # Run static analysis
```

Related Packages
----------------

[](#related-packages)

- [conduit-ui/issue](https://github.com/conduit-ui/issue) - Issue triage automation
- [conduit-ui/pr](https://github.com/conduit-ui/pr) - Pull request automation
- [conduit-ui/connector](https://github.com/conduit-ui/connector) - GitHub API transport layer

Enterprise Support
------------------

[](#enterprise-support)

Managing governance for 500+ repositories? Contact  for enterprise solutions including:

- Custom compliance reporting
- Automated policy enforcement
- Audit trail integration
- SOC2/ISO27001 compliance tooling
- Multi-organization management

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE.md) for details.

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance67

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

197d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a6bb27de88a541a632427686306c8fc56366d72582f6a3316d20500efe7971f3?d=identicon)[conduit-ui](/maintainers/conduit-ui)

---

Top Contributors

[![jordanpartridge](https://avatars.githubusercontent.com/u/9040417?v=4)](https://github.com/jordanpartridge "jordanpartridge (15 commits)")

---

Tags

laravelgithubrepositoriesconduit-ui

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/conduit-ui-repo/health.svg)

```
[![Health](https://phpackages.com/badges/conduit-ui-repo/health.svg)](https://phpackages.com/packages/conduit-ui-repo)
```

###  Alternatives

[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.8M47](/packages/spatie-laravel-pdf)[codewithdennis/filament-select-tree

The multi-level select field enables you to make single selections from a predefined list of options that are organized into multiple levels or depths.

329530.5k29](/packages/codewithdennis-filament-select-tree)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[worksome/exchange

Check Exchange Rates for any currency in Laravel.

124603.0k](/packages/worksome-exchange)[codebar-ag/laravel-docuware

DocuWare integration with Laravel

1123.7k](/packages/codebar-ag-laravel-docuware)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
