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(4mo ago)024[1 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 4mo 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 1mo ago

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

35

—

LowBetter than 79% of packages

Maintenance74

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

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

148d 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-data

Create unified resources and data transfer objects

1.7k28.9M627](/packages/spatie-laravel-data)[hirethunk/verbs

An event sourcing package that feels nice.

513162.9k6](/packages/hirethunk-verbs)[worksome/exchange

Check Exchange Rates for any currency in Laravel.

123544.7k](/packages/worksome-exchange)[ralphjsmit/livewire-urls

Get the previous and current url in Livewire.

82270.3k4](/packages/ralphjsmit-livewire-urls)[hydrat/filament-table-layout-toggle

Filament plugin adding a toggle button to tables, allowing user to switch between Grid and Table layouts.

6292.3k1](/packages/hydrat-filament-table-layout-toggle)[ralphjsmit/laravel-helpers

A package containing handy helpers for your Laravel-application.

13704.6k2](/packages/ralphjsmit-laravel-helpers)

PHPackages © 2026

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