Looking for install scripts, extensions, libraries, or plugins for Phabricator or Arcanist? Have something you want to share? Add a link here.
//We imagine eventually having real support for listing and managing extensions and applications, see T5055 and T5447 for some discussion.//
IMPORTANT: This page is primarily community-maintained and things linked here have not been vetted by the Phabricator upstream. They may not work at all, or may destroy all your data forever. Use these resources at your own risk!
NOTE: When creating a resource for sharing, please consider specifying a license; Some users are pretty pedantic about this, and they will not be able to use your gift without one.
= Linters and Test Engines =
- [[https://github.com/freelancer/flarc | **flarc**]]: Arcanist extensions used at Freelancer.com.
- ESLint linter
- Hadolint linter
- PHP-CS-Fixer linter
- PHPStan linter
- Stylelint linter
- `terraform fmt` linter
- TSLint linter
- Custom XHPAST rules
- **arcanist-extensions**: additional testing and linting engines.
- Source: https://github.com/tagview/arcanist-extensions
- Features:
- Multi test engine: run tests using multiple test engines
- RSpec test engine: Ruby's RSpec (version 2 and above) test engine
- Rubocop lint engine: run the Rubocop linter on your Ruby projects
- TAP test engine: run any TAP compatible testing tool
- **arcanist-support**: additional testing and linting engines used by MET Norway
- Source: https://github.com/metno/arcanist-support
- Features:
- arc-install, arc-uninstall. arc-upgrade: Scripts to simplify installation of arcanist for users
- arc-clean: Script for deleting patch branches
- SBTTestEngine: Runs unit tests for Scala using SBT
- Foodcritic Linter: Runs Foodcritic for Chef cookbooks
- Google CppLint Linter: Fixed version of the Arcanist CPP linter
- Scalastyle Lint Engine: Runs Scalastyle linter
- **arcanist-external-json-linter**: external linters with first-class messages
- Source: https://github.com/bgamari/arcanist-external-json-linter
- A linter type allowing external linters to produce JSON-serialized violation messages
- **clang-format-linter**: A linter for C/C++/Objective-C.
- Source: https://github.com/vhbit/clang-format-linter
- **swift-linter**: A linter for Swift code.
- Source: https://github.com/vhbit/swift-linter
- **xcode-unit-engine**: A unit test engine for Xcode projects.
- Source: https://github.com/google/arc-xcode-test-engine
- **proselint**: A linter for prose.
- Source: https://github.com/google/arc-proselint
- **arc-tslint**: A linter for typescript.
- Source: https://github.com/material-foundation/arc-tslint
- **arc-phpstan**: A linter for phpstan.
- Source: https://github.com/appsinet/arc-phpstan
- **arcanist-elixir-support**: Linter and unit testing engines for Arcanist
- Source: https://github.com/tolbrino/arcanist-elixir-support
- Open integration tasks: T9796, T9797
- **arcanist-android-linter**: Linter for Android xml and java based on gradle
- Source: https://github.com/DheerendraRathor/Arcanist-Android-Lint
- Features:
- Complete integration of checkstyle, pmd and findbugs
- A default configuration of Google checkstyle is included, it can be edited to include custom rules
- **arcanist-linters**: A collection of additional linters in use at [[ https://www.pinterest.com/ | Pinterest ]]
- Source: https://github.com/pinterest/arcanist-linters
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
- Linters:
- Apache Thrift - Lints for errors in [[ http://thrift.apache.org/ | Apache Thrift ]] IDL (schema) files using the `thrift` compiler
- Checkstyle - Uses the [[ http://checkstyle.sourceforge.net/ | Checkstyle ]] tool to check Java code against a coding standard
- ESLint - Lints JavaScript and JSX files using [[ https://eslint.org/ | ESLint ]].
- Go Vet - Uses the [[ https://golang.org/cmd/vet/ | Go vet command ]] to lint for suspicious code constructs
- Prettier - Formats JavaScript using [[ https://prettier.io/ | Prettier ]].
- Python Imports - Lints for illegal Python module imports
- Python isort - Lints Python imports using [[ https://github.com/timothycrosley/isort | isort ]].
- Python Requirements - Ensures Python package requirements in [[ https://pip.readthedocs.org/en/latest/user_guide/#requirements-files | requirements.txt files ]] are sorted, unique, and pinned to specific versions
- **arcanist-extensions-midje**: Midje unit test support for Arcanist. Midje is a test framework for Clojure.
- Source: https://github.com/uhd-urz/arcanist-extensions-midje
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
- **arc-detekt-linter**: Linter for Kotlin code based on Detekt.
- Source: https://github.com/moneybird/arc-detekt-linter
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
- **arcanist-htmlhint-linter**: Simple htmlhint linter built by BisManOnline
- Source: https://github.com/BisManOnline/arcanist-htmlhint-linter
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
= Arcanist Workflows =
- **arcanist-owners**: Adds an `arc owners` command that displays file ownership information
- Source: https://github.com/pinterest/arcanist-owners
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
= Phabricator Extensions =
- **PhabricatorBotLogger**: Chatbot IRC Logging into Conpherence. [[https://github.com/CodeMouse92/PhabricatorBotLogger | PhabricatorBotLogger]]
- **libphutil-haskell**: various extensions for Haskell.org, possibly useful to the outside world.
- Source: https://github.com/haskell-infra/libphutil-haskell
- Features:
- Custom Remarkup: [PhabricatorRemarkupGhcTracRule](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/markup/engine/remarkup/markuprule/PhabricatorRemarkupGhcTracRule.php)
- Custom Differential fields (in our case, to link [Trac](http://trac.edgewall.org) and Phab): [DifferentialGhcTracField](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/differential/customfield/DifferentialGhcTracField.php)
- Custom Herald actions: [SetTaskEditPolicyHeraldCustomAction](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/herald/customaction/SetTaskEditPolicyHeraldCustomAction.php) and [SetTaskViewPolicyHeraldCustomAction](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/herald/customaction/SetTaskViewPolicyHeraldCustomAction.php), which allow you to automatically assign 'Editable by' and 'Visible to' policies, as Global Maniphest Herald rules. The primary motivation is being able to email an address like `security@phabricator.foobar.org`, and have all emails sent to this address to have private visibility/editability automatically.
- Various Chatbot extensions for IRC:
- Automated logging into Phriction wikis for users: [PhabricatorBotServerAdminLogHandler](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/bot/handler/PhabricatorBotServerAdminLogHandler.php)
- Custom IRC handlers for various messages: [PhabricatorBotGhcTracHandler](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/bot/handler/PhabricatorBotGhcTracHandler.php), and [PhabricatorBotMiscGhcHandler](https://github.com/haskell-infra/libphutil-haskell/blob/master/src/extensions/bot/handler/PhabricatorBotMiscGhcHandler.php)
- **libphutil-scrypt**: support for `scrypt` based password storage
- Source: https://github.com/haskell-infra/libphutil-scrypt
- WARNING: To be deprecated by D10387
- **libphutil-yubikey**: adds [[https://www.yubico.com/products/services-software/personalization-tools/yubikey-otp/ | Yubikey OTP ]] support for Multi-Factor Authentication (MFA).
- Source: https://github.com/thoughtpolice/libphutil-yubikey
- NOTE: See T8787 for more information.
- **libphutil-backblaze**: adds [[https://www.backblaze.com/b2/cloud-storage.html | Backblaze B2 ]] file storage backend. Useful if you want S3, but you're super cheap.
- Source: https://github.com/thoughtpolice/libphutil-backblaze
- **phabricator-azure**: adds Azure Active Directory / Office 365 authentication providers
- See also: T5899, T4256
- **Wikimedia phab-extensions**: Miscellaneous Phabricator extensions maintained by the Wikimedia foundation. Note: some of these depend on hacks in [[ https://phabricator.wikimedia.org/source/phabricator/ | Wikimedia's fork ]] of Phabricator.
- `PhabricatorMediaWikiAuthProvider` oAuth1 authentication providers: use your mediawiki to authenticate phabricator logins.
- `MediaWikiUserpageCustomField`: Adds a link from phabricator user profiles to the associated MediaWiki user page.
- `CreatePolicyConduitAPIMethod`: Create phabricator policy objects via conduit.
- `PolicyQueryConduitAPIMethod`: Find policy object details via conduit.
- `CustomGithubDownloadLinks`: Adds github download links to diffusion repositories that are configured with a valid (enabled/visible) Github remote URI.
- Source: https://phabricator.wikimedia.org/source/phab-extensions/
- **phabricator-sprint**: Support for Sprints. Task points, Burndown charts.
- https://github.com/wikimedia/phabricator-extensions-Sprint - deprecated, previously maintained by WMF.
- https://github.com/bluehawk/phabricator-sprint - Original codebase.
- See also: T5051
- **phabricator-sparkpost**: adds an SparkPost outbound email adapter.
- Source: https://github.com/hiddeco/phabricator-sparkpost
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
- **AddSubscribersFromJIRAIssuesHeraldCustomAction**: Herald action to CC all watchers from all JIRA tickets marked on a Revision.
- P2001
- **phabricator-tools**: Phabricator helper scripts for backups, conduit interactions and extensions for general add-ons to phabricator.
- Source: https://github.com/epiphyte/phabricator-tools
- **HeraldMoveSpacesExtension**: Phabricator extension that teaches the Herald rule-bot about Spaces and how to set them.
- Source: https://github.com/eilslabs/HeraldMoveSpacesExtension
- **harbormaster-gocd-buildstep**: Phabricator extension that adds [[ https://www.gocd.org/ | GoCD ]] build step to Harbormaster.
- Source: https://github.com/kszatan/harbormaster-gocd-buildstep
- **phabricator-mail-xmpp**: Mail adapter to send messages through XMPP (Jabber).
- Source: https://github.com/0/phabricator-mail-xmpp
- License: [[ http://www.apache.org/licenses/LICENSE-2.0 | Apache 2.0 ]]
= Conduit Libraries =
- **python-phabricator**: Python binding for Phabricator Conduit API
- Source and instructions: https://github.com/disqus/python-phabricator
- **go-conduit**: Go package for Phabricator Conduit API
- Docs (and import path): http://poehls.me/go-conduit
- Usage examples are in the README: https://github.com/jpoehls/go-conduit
- **gonduit**: Another Go library for Conduit
- Source and docs: https://github.com/etcinit/gonduit
- **Phabricator.Conduit**: C# library for Phabricator Conduit API
- Source: https://github.com/hach-que/Phabricator.Conduit
- **Phabricator PHP API**: Alternative PHP library
- Source and Documentation: https://github.com/Zolli/Phabricator-PHP-API/
- **Ponduit**: A Powershell client for Conduit
- Source and docs: https://github.com/OCram85/Ponduit/
- **phabricator-d-api**: D programming language bindings for Conduit
- Source and docs: https://github.com/epiphyte/phabricator-d-api/
= Integrations =
- **phabulous**: A Phabricator bot for Slack
- Source: https://github.com/etcinit/phabulous
- **Phabricator Jenkins Plugin**: Play telephone with Jenkins while it builds your code
- Homepage: https://wiki.jenkins-ci.org/display/JENKINS/Phabricator+Differential+Plugin
- **git-phab**: Git subcommand to support git-flow-style workflows
- Repository and README: https://phabricator.freedesktop.org/diffusion/GITPHAB/
- **Phabricator on Microsoft Azure**: Automated deployment of phabricator on a Ubuntu 16.04 VM in Microsoft Azure
- Repository and README: https://github.com/Azure/azure-quickstart-templates/tree/master/phabricator-on-ubuntu
- **wuf2p** (Webapp User Feedback to Phabricator): a web application plugin for collecting user feedback and sending it straight to Phabricator, creating a task in Maniphest complete with screenshot and detailed info
- Source: https://gitlab.com/simevo/wuf2p
- **Keymetrics to Phabricator gateway**: Turns Keymetrics errors and exceptions into new tasks in Phabricator
- Repository and README: https://github.com/sheershoff/keymetrics-phabricator-gateway
= Migration =
- **github-wiki-to-phriction**: Python tool for migrating a GitHub wiki to Phriction, and a Pandoc script to output Remarkup.
- Source: https://github.com/aaron11496/github-wiki-to-phriction
- **ManiphestIncludeCustomFieldsExcelFormat.php**: An additional Excel export format which will include a task's custom fields
- **//Read the large comment at the beginning of the extension to understand its hazards/limitations//**
- Source: https://github.com/neandrake/phab-utils/tree/master/extensions
- **Remarkup-ed messages**: Translations of messages from popular (Java) tools into Remarkup.
- Currently Findbugs, soon PMD?
- https://github.com/avivey/remarkup-java
- **Kanboard to tasks**: semi-manual procedure + Python script for migrating tasks from Kanboard to Phabricator workboards
- Link: http://wp.libpf.com/?p=1085
- **Trello to Phabricator import tool**: Set of python tools to extract info and cards from Trello and import them into Phabricator.
- Link: https://github.com/MarcDufresne/TrelloToPhabricatorMigration
= Translations =
- Up-to-date Simplified Chinese Translation and Translation Tools: https://github.com/arielyang/phabricator_zh_Hans
- Chinese: https://github.com/WuJiahu/phabricator/tree/master/src/infrastructure/internationalization/translation
- German/ Deutsch: P1792 (mainly Maniphest)
- Russian: https://github.com/believer-ufa/phabricator-russian
= Security =
- **SELinux policies** for Phabricator/Arcanist/Libphutil
- https://github.com/vinzent/phabricator/tree/master/resources/selinux
= Packaging =
See also T4200
- **Puppet module:** A Puppet module for installing and configuring Phabricator. https://forge.puppet.com/joshuaspence/phabricator
- **RHEL/Centos 6 packaging**: integrated RPM management for Phabricator
- https://github.com/vinzent/phabricator
- See also: D10509
- **Nix packages for Arcanist**: //official// Nix and NixOS packages for the command line tool.
- See [the source in nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/misc/arcanist/default.nix).
- Updated bi-weekly (usually).
- Can be installed via `nix-env -i arcanist`
- **Bash Script to Install Arcanist**: A script written in shell commands to auto install Arcanist command line tool.
- See P1887
- Run by `bash filename.sh` to install in `~/.arc/`. Or run as `bash filename.sh -d /path/to/install/dir` to pass custom directory for installation
- **Chef Cookbook for Phabricator**: Chef cookbook for installing and configuring phabricator
- Available on [supermarket.chef.io](https://supermarket.chef.io/cookbooks/phabricator)
- See [the source on github](https://github.com/metno/cookbook-phabricator).
- Contributions are welcomed.
- **Packages for Fedora, EL6, EL7**
- [[https://copr.fedorainfracloud.org/coprs/tflink/phabricator/|Repositories in Fedora COPR]]
- [[https://bitbucket.org/tflink/phabricator-dist|Spec files, utility scripts, systemd unit files, etc.]]
- Packages are usually updated with new snapshots of the stable branches every couple of weeks
- EL6 and EL7 packages are built and updated but I don't use or test them
- **Vagrant environment**: Provides a basic installation to get Phabricator up and running using Vagrant
- https://github.com/apptimists/phabricator-vagrant
- **OpenShift / Kubernetes deployment**: Deploy a full Phabricator stack on Red Hat OpenShift Kubernetes clusters.
- https://github.com/leoluk/openshift-phabricator
= Apps =
- **iOS App** Simple App (Extended Wrapper) for Phabricator
- Source: https://github.com/rphl/phabricator-ios-app
= Browser Extensions =
- group-phabricator-notifications: [[ https://github.com/joakin/group-phabricator-notifications | source ]], [[ https://addons.mozilla.org/en-US/firefox/addon/phabricatornotificationgroups/ | Firefox Extension ]], [[ https://chrome.google.com/webstore/detail/group-phabricator-notific/anjockgdedgaiionihlpdcjijpohipdj/ | Chrome Extension ]]
= Administration Scripts =
- **CentOS 7** Service management/upgrading (with backups) and configurations for SSHD
- https://github.com/neandrake/phab-utils
- **Ubuntu / Debian** Service and SSH daemon management
- [[ https://github.com/Zolli/Phabricator-Daemons | Installation and usage ]]
= Symbols =
- P1785 Symbol update script from local clone of a repository.
- See also [Symbol Docs](https://secure.phabricator.com/book/phabricator/article/diffusion_symbols/)
= Training =
== On-boarding ==
- P1876 Script to verity the users are set up correctly with arc, arc token, and SSH keys.
- Short [Presentation](https://docs.google.com/presentation/d/1BNdNMzuVYambeybgVETlTynU74uK47SKXrq7NzgUPFE) for reviewers-only (So they remember to hit submit).
= Walkthroughs =
- [[community_resources/building_xhpast_on_windows | Building XHPAST on Windows]]
- [[community_resources/configuring_a_windows_build_agent_for_drydock | Configuring a Windows build agent for Drydock]]